|
@@ -7399,6 +7399,7 @@ static int __alloc_contig_migrate_range(struct compact_control *cc,
|
|
|
* #MIGRATE_MOVABLE or #MIGRATE_CMA). All pageblocks
|
|
|
* in range must have the same migratetype and it must
|
|
|
* be either of the two.
|
|
|
+ * @gfp_mask: GFP mask to use during compaction
|
|
|
*
|
|
|
* The PFN range does not have to be pageblock or MAX_ORDER_NR_PAGES
|
|
|
* aligned, however it's the caller's responsibility to guarantee that
|
|
@@ -7412,7 +7413,7 @@ static int __alloc_contig_migrate_range(struct compact_control *cc,
|
|
|
* need to be freed with free_contig_range().
|
|
|
*/
|
|
|
int alloc_contig_range(unsigned long start, unsigned long end,
|
|
|
- unsigned migratetype)
|
|
|
+ unsigned migratetype, gfp_t gfp_mask)
|
|
|
{
|
|
|
unsigned long outer_start, outer_end;
|
|
|
unsigned int order;
|
|
@@ -7424,7 +7425,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
|
|
|
.zone = page_zone(pfn_to_page(start)),
|
|
|
.mode = MIGRATE_SYNC,
|
|
|
.ignore_skip_hint = true,
|
|
|
- .gfp_mask = GFP_KERNEL,
|
|
|
+ .gfp_mask = memalloc_noio_flags(gfp_mask),
|
|
|
};
|
|
|
INIT_LIST_HEAD(&cc.migratepages);
|
|
|
|