mm: hugetlb_vmemmap: allow alloc vmemmap pages fallback to other nodes
authorYuan Can <yuancan@huawei.com>
Wed, 6 Sep 2023 09:31:57 +0000 (17:31 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 4 Oct 2023 17:32:22 +0000 (10:32 -0700)
In vmemmap_remap_free(), a new head vmemmap page is allocated to avoid
breaking a contiguous block of struct page memory, however, the allocation
can always fail when the given node is movable node.  Remove the
__GFP_THISNODE to help avoid fragmentation.

Link: https://lkml.kernel.org/r/20230906093157.9737-1-yuancan@huawei.com
Signed-off-by: Yuan Can <yuancan@huawei.com>
Suggested-by: Mike Kravetz <mike.kravetz@oracle.com>
Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
Suggested-by: Muchun Song <songmuchun@bytedance.com>
Reviewed-by: Muchun Song <songmuchun@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/hugetlb_vmemmap.c

index 3e53878..0bde386 100644 (file)
@@ -320,8 +320,7 @@ static int vmemmap_remap_free(unsigned long start, unsigned long end,
                .vmemmap_pages  = &vmemmap_pages,
        };
        int nid = page_to_nid((struct page *)start);
-       gfp_t gfp_mask = GFP_KERNEL | __GFP_THISNODE | __GFP_NORETRY |
-                       __GFP_NOWARN;
+       gfp_t gfp_mask = GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN;
 
        /*
         * Allocate a new head vmemmap page to avoid breaking a contiguous