The patch titled Subject: mm: migrate: do not migrate HugeTLB page whose refcount is one has been added to the -mm tree. Its filename is mm-migrate-do-not-migrate-hugetlb-page-whose-refcount-is-one.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/mm-migrate-do-not-migrate-hugetlb-page-whose-refcount-is-one.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/mm-migrate-do-not-migrate-hugetlb-page-whose-refcount-is-one.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Muchun Song <songmuchun@xxxxxxxxxxxxx> Subject: mm: migrate: do not migrate HugeTLB page whose refcount is one If the refcount is one when it is migrated, it means that the page was freed from under us. So we are done and do not need to migrate. This optimization is consistent with the regular pages, just like unmap_and_move() does. Link: https://lkml.kernel.org/r/20210110124017.86750-2-songmuchun@xxxxxxxxxxxxx Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> Acked-by: Yang Shi <shy828301@xxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxxxxxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx> Cc: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/migrate.c | 6 ++++++ 1 file changed, 6 insertions(+) --- a/mm/migrate.c~mm-migrate-do-not-migrate-hugetlb-page-whose-refcount-is-one +++ a/mm/migrate.c @@ -1284,6 +1284,12 @@ static int unmap_and_move_huge_page(new_ return -ENOSYS; } + if (page_count(hpage) == 1) { + /* page was freed from under us. So we are done. */ + putback_active_hugepage(hpage); + return MIGRATEPAGE_SUCCESS; + } + new_hpage = get_new_page(hpage, private); if (!new_hpage) return -ENOMEM; _ Patches currently in -mm which might be from songmuchun@xxxxxxxxxxxxx are mm-hugetlbfs-fix-cannot-migrate-the-fallocated-hugetlb-page.patch mm-hugetlb-fix-a-race-between-freeing-and-dissolving-the-page.patch mm-hugetlb-fix-a-race-between-isolating-and-freeing-page.patch mm-hugetlb-remove-vm_bug_on_page-from-page_huge_active.patch mm-memcontrol-optimize-per-lruvec-stats-counter-memory-usage.patch mm-memcontrol-fix-nr_anon_thps-accounting-in-charge-moving.patch mm-memcontrol-convert-nr_anon_thps-account-to-pages.patch mm-memcontrol-convert-nr_file_thps-account-to-pages.patch mm-memcontrol-convert-nr_shmem_thps-account-to-pages.patch mm-memcontrol-convert-nr_shmem_pmdmapped-account-to-pages.patch mm-memcontrol-convert-nr_file_pmdmapped-account-to-pages.patch mm-memcontrol-make-the-slab-calculation-consistent.patch mm-migrate-do-not-migrate-hugetlb-page-whose-refcount-is-one.patch mm-hugetlb-add-return-eagain-for-dissolve_free_huge_page.patch