diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 37a4d9e32cd3..60136487b584 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -223,7 +223,13 @@ static inline struct page *page_cache_alloc(struct address_space *x) static inline gfp_t readahead_gfp_mask(struct address_space *x) { - return mapping_gfp_mask(x) | __GFP_NORETRY | __GFP_NOWARN; + gfp_t gfp_mask = mapping_gfp_mask(x) | + __GFP_NORETRY | __GFP_NOWARN; + + if (gfp_mask & __GFP_MOVABLE) + gfp_mask |= __GFP_CMA; + + return gfp_mask; } typedef int filler_t(void *, struct page *);