Commit fde82aaa authored by Michal Hocko's avatar Michal Hocko Committed by Linus Torvalds

mm/page_alloc.c: get rid of __alloc_pages_high_priority()

__alloc_pages_high_priority doesn't do anything special other than it
calls get_page_from_freelist and loops around GFP_NOFAIL allocation
until it succeeds.  It would be better if the first part was done in
__alloc_pages_slowpath where we modify the zonelist because this would
be easier to read and understand.  Opencoding the function into its only
caller allows to simplify it a bit as well.

This patch doesn't introduce any functional changes.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: default avatarMichal Hocko <mhocko@suse.com>
Acked-by: default avatarMel Gorman <mgorman@suse.de>
Acked-by: default avatarDavid Rientjes <rientjes@google.com>
Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent c00eb15a
...@@ -2876,28 +2876,6 @@ __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order, ...@@ -2876,28 +2876,6 @@ __alloc_pages_direct_reclaim(gfp_t gfp_mask, unsigned int order,
return page; return page;
} }
/*
* This is called in the allocator slow-path if the allocation request is of
* sufficient urgency to ignore watermarks and take other desperate measures
*/
static inline struct page *
__alloc_pages_high_priority(gfp_t gfp_mask, unsigned int order,
const struct alloc_context *ac)
{
struct page *page;
do {
page = get_page_from_freelist(gfp_mask, order,
ALLOC_NO_WATERMARKS, ac);
if (!page && gfp_mask & __GFP_NOFAIL)
wait_iff_congested(ac->preferred_zone, BLK_RW_ASYNC,
HZ/50);
} while (!page && (gfp_mask & __GFP_NOFAIL));
return page;
}
static void wake_all_kswapds(unsigned int order, const struct alloc_context *ac) static void wake_all_kswapds(unsigned int order, const struct alloc_context *ac)
{ {
struct zoneref *z; struct zoneref *z;
...@@ -3042,12 +3020,16 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order, ...@@ -3042,12 +3020,16 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
* allocations are system rather than user orientated * allocations are system rather than user orientated
*/ */
ac->zonelist = node_zonelist(numa_node_id(), gfp_mask); ac->zonelist = node_zonelist(numa_node_id(), gfp_mask);
do {
page = get_page_from_freelist(gfp_mask, order,
ALLOC_NO_WATERMARKS, ac);
if (page)
goto got_pg;
page = __alloc_pages_high_priority(gfp_mask, order, ac); if (gfp_mask & __GFP_NOFAIL)
wait_iff_congested(ac->preferred_zone,
if (page) { BLK_RW_ASYNC, HZ/50);
goto got_pg; } while (gfp_mask & __GFP_NOFAIL);
}
} }
/* Caller is not willing to reclaim, we can't balance anything */ /* Caller is not willing to reclaim, we can't balance anything */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment