This change sets the selected migrate type in gfp_t flags. Signed-off-by: Juan Yescas --- mm/page_alloc_hogger.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/mm/page_alloc_hogger.c b/mm/page_alloc_hogger.c index 5c00e9134a66..d91f49880f8d 100644 --- a/mm/page_alloc_hogger.c +++ b/mm/page_alloc_hogger.c @@ -156,6 +156,24 @@ inline void set_zone_to_alloc_from(int zone_idx, gfp_t *flags_ptr) } } +inline void set_migrate_type_to_alloc_from(int migrate_type, gfp_t *flags_ptr) +{ + switch (migrate_type) { + case MIGRATE_UNMOVABLE: + *flags_ptr &= ~(__GFP_RECLAIMABLE | __GFP_MOVABLE); + break; + case MIGRATE_RECLAIMABLE: + *flags_ptr |= __GFP_RECLAIMABLE; + break; + case MIGRATE_HIGHATOMIC: + *flags_ptr |= __GFP_HIGH; + break; + case MIGRATE_MOVABLE: default: + *flags_ptr |= __GFP_MOVABLE; + break; + } +} + /** * req_page_alloc_write() - Allocates the pages on the requested node, zone, * order and migrate type. Once the allocation is performed, a file is created @@ -180,6 +198,7 @@ static ssize_t req_page_alloc_write(struct file *file, const char __user *ubuf, return -ENOMEM; set_zone_to_alloc_from(req->zone_idx, &flags); + set_migrate_type_to_alloc_from(req->migrate_type, &flags); return cnt; } -- 2.55.0.229.g6434b31f56-goog