mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 04:34:03 +02:00
mm/page_alloc: some renames to clarify alloc_flags scopes
It's pretty confusing that: - The slowpath and fastpath have a totally distinct set of alloc_flags. - gfp_to_alloc_flags() sounds generic but it only influences the slowpath. Rename some variables to highlight which alloc_flags are fastpath-specific. Rename gfp_to_alloc_flags() to highlight that it's slowpath-specific. gfp_to_alloc_flags_cma() and gfp_to_alloc_flags_nonblocking() currently have perfectly harmless names, but to keep the naming consistent also rename those to the alloc_flags_*() pattern (which already exists for alloc_flags_nofragment()). Link: https://lore.kernel.org/20260703-alloc-trylock-v5-2-c87b714e19d3@google.com Signed-off-by: Brendan Jackman <jackmanb@google.com> Reviewed-by: Vlastimil Babka (SUSE) <vbabka@kernel.org> Acked-by: JP Kobryn <jp.kobryn@linux.dev> Reviewed-by: Zi Yan <ziy@nvidia.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
03eaf4c445
commit
4b2b50a9f8
|
|
@ -3573,7 +3573,7 @@ static inline struct page *__dev_alloc_pages_noprof(gfp_t gfp_mask,
|
|||
* 3. If requesting a order 0 page it will not be compound
|
||||
* due to the check to see if order has a value in prep_new_page
|
||||
* 4. __GFP_MEMALLOC is ignored if __GFP_NOMEMALLOC is set due to
|
||||
* code in gfp_to_alloc_flags that should be enforcing this.
|
||||
* code in alloc_flags_slowpath() that should be enforcing this.
|
||||
*/
|
||||
gfp_mask |= __GFP_COMP | __GFP_MEMALLOC;
|
||||
|
||||
|
|
|
|||
|
|
@ -3774,8 +3774,8 @@ alloc_flags_nofragment(struct zone *zone, gfp_t gfp_mask)
|
|||
}
|
||||
|
||||
/* Must be called after current_gfp_context() which can change gfp_mask */
|
||||
static inline unsigned int gfp_to_alloc_flags_cma(gfp_t gfp_mask,
|
||||
unsigned int alloc_flags)
|
||||
static inline unsigned int alloc_flags_cma(gfp_t gfp_mask,
|
||||
unsigned int alloc_flags)
|
||||
{
|
||||
#ifdef CONFIG_CMA
|
||||
if (gfp_migratetype(gfp_mask) == MIGRATE_MOVABLE)
|
||||
|
|
@ -4474,7 +4474,7 @@ static void wake_all_kswapds(unsigned int order, gfp_t gfp_mask,
|
|||
}
|
||||
|
||||
static inline unsigned int
|
||||
gfp_to_alloc_flags_nonblocking(gfp_t gfp_mask, unsigned int order)
|
||||
alloc_flags_nonblocking(gfp_t gfp_mask, unsigned int order)
|
||||
{
|
||||
unsigned int alloc_flags = 0;
|
||||
|
||||
|
|
@ -4497,7 +4497,7 @@ gfp_to_alloc_flags_nonblocking(gfp_t gfp_mask, unsigned int order)
|
|||
}
|
||||
|
||||
static inline unsigned int
|
||||
gfp_to_alloc_flags(gfp_t gfp_mask, unsigned int order)
|
||||
alloc_flags_slowpath(gfp_t gfp_mask, unsigned int order)
|
||||
{
|
||||
unsigned int alloc_flags = ALLOC_WMARK_MIN | ALLOC_CPUSET;
|
||||
|
||||
|
|
@ -4512,7 +4512,7 @@ gfp_to_alloc_flags(gfp_t gfp_mask, unsigned int order)
|
|||
if (gfp_mask & __GFP_KSWAPD_RECLAIM)
|
||||
alloc_flags |= ALLOC_KSWAPD;
|
||||
|
||||
alloc_flags |= gfp_to_alloc_flags_nonblocking(gfp_mask, order);
|
||||
alloc_flags |= alloc_flags_nonblocking(gfp_mask, order);
|
||||
|
||||
if (!(gfp_mask & __GFP_DIRECT_RECLAIM)) {
|
||||
/*
|
||||
|
|
@ -4525,7 +4525,7 @@ gfp_to_alloc_flags(gfp_t gfp_mask, unsigned int order)
|
|||
} else if (unlikely(rt_or_dl_task(current)) && in_task())
|
||||
alloc_flags |= ALLOC_MIN_RESERVE;
|
||||
|
||||
alloc_flags = gfp_to_alloc_flags_cma(gfp_mask, alloc_flags);
|
||||
alloc_flags = alloc_flags_cma(gfp_mask, alloc_flags);
|
||||
|
||||
if (defrag_mode)
|
||||
alloc_flags |= ALLOC_NOFRAGMENT;
|
||||
|
|
@ -4791,7 +4791,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
|
|||
* kswapd needs to be woken up, and to avoid the cost of setting up
|
||||
* alloc_flags precisely. So we do that now.
|
||||
*/
|
||||
alloc_flags = gfp_to_alloc_flags(gfp_mask, order);
|
||||
alloc_flags = alloc_flags_slowpath(gfp_mask, order);
|
||||
|
||||
/*
|
||||
* We need to recalculate the starting point for the zonelist iterator
|
||||
|
|
@ -4832,7 +4832,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
|
|||
|
||||
reserve_flags = __gfp_pfmemalloc_flags(gfp_mask);
|
||||
if (reserve_flags)
|
||||
alloc_flags = gfp_to_alloc_flags_cma(gfp_mask, reserve_flags) |
|
||||
alloc_flags = alloc_flags_cma(gfp_mask, reserve_flags) |
|
||||
(alloc_flags & ALLOC_KSWAPD);
|
||||
|
||||
/*
|
||||
|
|
@ -5063,7 +5063,7 @@ static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
|
|||
should_fail_alloc_page(gfp_mask, order))
|
||||
return false;
|
||||
|
||||
*alloc_flags = gfp_to_alloc_flags_cma(gfp_mask, *alloc_flags);
|
||||
*alloc_flags = alloc_flags_cma(gfp_mask, *alloc_flags);
|
||||
|
||||
/* Dirty zone balancing only done in the fast path */
|
||||
ac->spread_dirty_pages = (gfp_mask & __GFP_WRITE);
|
||||
|
|
@ -5277,7 +5277,7 @@ struct page *__alloc_frozen_pages_noprof(gfp_t gfp, unsigned int order,
|
|||
int preferred_nid, nodemask_t *nodemask)
|
||||
{
|
||||
struct page *page;
|
||||
unsigned int alloc_flags = ALLOC_WMARK_LOW;
|
||||
unsigned int fastpath_alloc_flags = ALLOC_WMARK_LOW;
|
||||
gfp_t alloc_gfp; /* The gfp_t that was actually used for allocation */
|
||||
struct alloc_context ac = { };
|
||||
|
||||
|
|
@ -5299,18 +5299,18 @@ struct page *__alloc_frozen_pages_noprof(gfp_t gfp, unsigned int order,
|
|||
gfp = current_gfp_context(gfp);
|
||||
alloc_gfp = gfp;
|
||||
if (!prepare_alloc_pages(gfp, order, preferred_nid, nodemask, &ac,
|
||||
&alloc_gfp, &alloc_flags))
|
||||
&alloc_gfp, &fastpath_alloc_flags))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* Forbid the first pass from falling back to types that fragment
|
||||
* memory until all local zones are considered.
|
||||
*/
|
||||
alloc_flags |= alloc_flags_nofragment(zonelist_zone(ac.preferred_zoneref), gfp);
|
||||
alloc_flags |= gfp_to_alloc_flags_nonblocking(gfp, order) & ALLOC_HIGHATOMIC;
|
||||
fastpath_alloc_flags |= alloc_flags_nofragment(zonelist_zone(ac.preferred_zoneref), gfp);
|
||||
fastpath_alloc_flags |= alloc_flags_nonblocking(gfp, order) & ALLOC_HIGHATOMIC;
|
||||
|
||||
/* First allocation attempt */
|
||||
page = get_page_from_freelist(alloc_gfp, order, alloc_flags, &ac);
|
||||
page = get_page_from_freelist(alloc_gfp, order, fastpath_alloc_flags, &ac);
|
||||
if (likely(page))
|
||||
goto out;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user