mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
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: Michal Hocko <mhocko@suse.com> Acked-by: Mel Gorman <mgorman@suse.de> Acked-by: David Rientjes <rientjes@google.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c00eb15a89
commit
fde82aaa73
@ -2876,28 +2876,6 @@ retry:
|
||||
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)
|
||||
{
|
||||
struct zoneref *z;
|
||||
@ -3042,12 +3020,16 @@ retry:
|
||||
* allocations are system rather than user orientated
|
||||
*/
|
||||
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 (page) {
|
||||
goto got_pg;
|
||||
}
|
||||
if (gfp_mask & __GFP_NOFAIL)
|
||||
wait_iff_congested(ac->preferred_zone,
|
||||
BLK_RW_ASYNC, HZ/50);
|
||||
} while (gfp_mask & __GFP_NOFAIL);
|
||||
}
|
||||
|
||||
/* Caller is not willing to reclaim, we can't balance anything */
|
||||
|
Loading…
Reference in New Issue
Block a user