mm: convert try_to_unmap_one() to use page_vma_mapped_walk()
For consistency, it worth converting all page_check_address() to page_vma_mapped_walk(), so we could drop the former. It also makes freeze_page() as we walk though rmap only once. Link: http://lkml.kernel.org/r/20170129173858.45174-8-kirill.shutemov@linux.intel.com Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Hillf Danton <hillf.zj@alibaba-inc.com> Cc: Hugh Dickins <hughd@google.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Rik van Riel <riel@redhat.com> Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com> Cc: Vladimir Davydov <vdavydov.dev@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
f27176cfc3
commit
c7ab0d2fdc
@@ -2106,24 +2106,16 @@ void vma_adjust_trans_huge(struct vm_area_struct *vma,
|
||||
static void freeze_page(struct page *page)
|
||||
{
|
||||
enum ttu_flags ttu_flags = TTU_IGNORE_MLOCK | TTU_IGNORE_ACCESS |
|
||||
TTU_RMAP_LOCKED;
|
||||
int i, ret;
|
||||
TTU_RMAP_LOCKED | TTU_SPLIT_HUGE_PMD;
|
||||
int ret;
|
||||
|
||||
VM_BUG_ON_PAGE(!PageHead(page), page);
|
||||
|
||||
if (PageAnon(page))
|
||||
ttu_flags |= TTU_MIGRATION;
|
||||
|
||||
/* We only need TTU_SPLIT_HUGE_PMD once */
|
||||
ret = try_to_unmap(page, ttu_flags | TTU_SPLIT_HUGE_PMD);
|
||||
for (i = 1; !ret && i < HPAGE_PMD_NR; i++) {
|
||||
/* Cut short if the page is unmapped */
|
||||
if (page_count(page) == 1)
|
||||
return;
|
||||
|
||||
ret = try_to_unmap(page + i, ttu_flags);
|
||||
}
|
||||
VM_BUG_ON_PAGE(ret, page + i - 1);
|
||||
ret = try_to_unmap(page, ttu_flags);
|
||||
VM_BUG_ON_PAGE(ret, page);
|
||||
}
|
||||
|
||||
static void unfreeze_page(struct page *page)
|
||||
|
||||
Reference in New Issue
Block a user