mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
mm/vmalloc: add a helper to optimize vmalloc allocation gfps
vm_area_alloc_pages() attempts to use different gfp flags as a way to optimize allocations. This has been done inline which makes things harder to read. Add a helper function to make the code more readable. Link: https://lkml.kernel.org/r/20251121094405.40628-3-vishal.moola@gmail.com Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> Reviewed-by: "Uladzislau Rezki (Sony)" <urezki@gmail.com> Acked-by: SeongJae Park <sj@kernel.org> Cc: Christoph Hellwig <hch@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
07003531e0
commit
bb4d3c7686
17
mm/vmalloc.c
17
mm/vmalloc.c
|
|
@ -3614,6 +3614,17 @@ void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot)
|
|||
EXPORT_SYMBOL_GPL(vmap_pfn);
|
||||
#endif /* CONFIG_VMAP_PFN */
|
||||
|
||||
/*
|
||||
* Helper for vmalloc to adjust the gfp flags for certain allocations.
|
||||
*/
|
||||
static inline gfp_t vmalloc_gfp_adjust(gfp_t flags, const bool large)
|
||||
{
|
||||
flags |= __GFP_NOWARN;
|
||||
if (large)
|
||||
flags &= ~__GFP_NOFAIL;
|
||||
return flags;
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
vm_area_alloc_pages(gfp_t gfp, int nid,
|
||||
unsigned int order, unsigned int nr_pages, struct page **pages)
|
||||
|
|
@ -3852,9 +3863,9 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
|
|||
* Please note, the __vmalloc_node_range_noprof() falls-back
|
||||
* to order-0 pages if high-order attempt is unsuccessful.
|
||||
*/
|
||||
area->nr_pages = vm_area_alloc_pages((page_order ?
|
||||
gfp_mask & ~__GFP_NOFAIL : gfp_mask) | __GFP_NOWARN,
|
||||
node, page_order, nr_small_pages, area->pages);
|
||||
area->nr_pages = vm_area_alloc_pages(
|
||||
vmalloc_gfp_adjust(gfp_mask, page_order), node,
|
||||
page_order, nr_small_pages, area->pages);
|
||||
|
||||
atomic_long_add(area->nr_pages, &nr_vmalloc_pages);
|
||||
/* All pages of vm should be charged to same memcg, so use first one. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user