diff mbox series

mm: hugetlb_vmemmap: allow alloc vmemmap pages fallback to other nodes

Message ID 20230906093157.9737-1-yuancan@huawei.com (mailing list archive)
State New
Headers show
Series mm: hugetlb_vmemmap: allow alloc vmemmap pages fallback to other nodes | expand

Commit Message

Yuan Can Sept. 6, 2023, 9:31 a.m. UTC
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.

Suggested-by: Mike Kravetz <mike.kravetz@oracle.com>
Suggested-by: Muchun Song <songmuchun@bytedance.com>
Signed-off-by: Yuan Can <yuancan@huawei.com>
---
 mm/hugetlb_vmemmap.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Muchun Song Sept. 7, 2023, 6:37 a.m. UTC | #1
> On Sep 6, 2023, at 17:31, Yuan Can <yuancan@huawei.com> wrote:
> 
> 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.

BTW: it is not a fatal error, so there is no need to backport.

> 
> Suggested-by: Mike Kravetz <mike.kravetz@oracle.com>
> Suggested-by: Muchun Song <songmuchun@bytedance.com>
> Signed-off-by: Yuan Can <yuancan@huawei.com>

Reviewed-by: Muchun Song <songmuchun@bytedance.com>

Thanks.
Mike Kravetz Sept. 7, 2023, 8:31 p.m. UTC | #2
On 09/06/23 17:31, Yuan Can wrote:
> 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.
> 
> Suggested-by: Mike Kravetz <mike.kravetz@oracle.com>
> Suggested-by: Muchun Song <songmuchun@bytedance.com>
> Signed-off-by: Yuan Can <yuancan@huawei.com>
> ---
>  mm/hugetlb_vmemmap.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Thanks,

Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
diff mbox series

Patch

diff --git a/mm/hugetlb_vmemmap.c b/mm/hugetlb_vmemmap.c
index c2007ef5e9b0..27fc65b8e37e 100644
--- a/mm/hugetlb_vmemmap.c
+++ b/mm/hugetlb_vmemmap.c
@@ -325,8 +325,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