[PATCH 09/11] mm: Pass order to prepare_alloc_pages in GFP flags

Matthew Wilcox
2019-05-07T04:06:46Z

Also pass the order to should_fail_alloc_page() in the GFP flags,
which only used the order when calling prepare_alloc_pages().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
mm/page_alloc.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index f693fec5f555..94ad4727206e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -3247,8 +3247,9 @@ static int __init setup_fail_page_alloc(char *str)
}
__setup("fail_page_alloc=", setup_fail_page_alloc);

-static bool __should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
+static bool __should_fail_alloc_page(gfp_t gfp_mask)
{
+ unsigned int order = gfp_order(gfp_mask);
if (order < fail_page_alloc.min_order)
return false;
if (gfp_mask & __GFP_NOFAIL)
@@ -3287,16 +3288,16 @@ late_initcall(fail_page_alloc_debugfs);

#else /* CONFIG_FAIL_PAGE_ALLOC */

-static inline bool __should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
+static inline bool __should_fail_alloc_page(gfp_t gfp_mask)
{
return false;
}

#endif /* CONFIG_FAIL_PAGE_ALLOC */

-static noinline bool should_fail_alloc_page(gfp_t gfp_mask, unsigned int order)
+static noinline bool should_fail_alloc_page(gfp_t gfp_mask)
{
- return __should_fail_alloc_page(gfp_mask, order);
+ return __should_fail_alloc_page(gfp_mask);
}
ALLOW_ERROR_INJECTION(should_fail_alloc_page, TRUE);

@@ -4556,7 +4557,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, unsigned int order,
return page;
}

-static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,
+static inline bool prepare_alloc_pages(gfp_t gfp_mask,
int preferred_nid, nodemask_t *nodemask,
struct alloc_context *ac, gfp_t *alloc_mask,
unsigned int *alloc_flags)
@@ -4579,7 +4580,7 @@ static inline bool prepare_alloc_pages(gfp_t gfp_mask, unsigned int order,

might_sleep_if(gfp_mask & __GFP_DIRECT_RECLAIM);

- if (should_fail_alloc_page(gfp_mask, order))
+ if (should_fail_alloc_page(gfp_mask))
return false;

if (IS_ENABLED(CONFIG_CMA) && ac->migratetype == MIGRATE_MOVABLE)
@@ -4626,7 +4627,7 @@ __alloc_pages_nodemask(gfp_t gfp_mask, int preferred_nid, nodemask_t *nodemask)

gfp_mask &= gfp_allowed_mask;
alloc_mask = gfp_mask;
- if (!prepare_alloc_pages(gfp_mask, order, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags))
+ if (!prepare_alloc_pages(gfp_mask, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags))
return NULL;

finalise_ac(gfp_mask, &ac);
--
2.20.1