mirror of https://gitee.com/openkylin/linux.git
mm: don't waste swap on locked pages
try_to_unmap always fails on a page found in a VM_LOCKED vma (unless migrating), and recycles it back to the active list. But if it's an anonymous page, we've already allocated swap to it: just wasting swap. Spot locked pages in page_referenced_one and treat them as referenced. Signed-off-by: Hugh Dickins <hugh@veritas.com> Tested-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Ethan Solomita <solo@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9eccf2a816
commit
5a9bbdcd29
|
@ -283,7 +283,10 @@ static int page_referenced_one(struct page *page,
|
|||
if (!pte)
|
||||
goto out;
|
||||
|
||||
if (ptep_clear_flush_young(vma, address, pte))
|
||||
if (vma->vm_flags & VM_LOCKED) {
|
||||
referenced++;
|
||||
*mapcount = 1; /* break early from loop */
|
||||
} else if (ptep_clear_flush_young(vma, address, pte))
|
||||
referenced++;
|
||||
|
||||
/* Pretend the page is referenced if the task has the
|
||||
|
|
Loading…
Reference in New Issue