diff --git a/mm/compaction.c b/mm/compaction.c index e8f5b4e2cb05511c7b9c53d1351e8a17c93afb0a..bb1188a9d58ed578dfca3cea77a905cb95c31e30 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -295,7 +295,7 @@ static void update_pageblock_skip(struct compact_control *cc, struct zone *zone = cc->zone; unsigned long pfn; - if (cc->ignore_skip_hint) + if (cc->no_set_skip_hint) return; if (!page) diff --git a/mm/internal.h b/mm/internal.h index 1df011f624801ffbdf3379a6d17218d9b32280e1..e6bd35182daee1226b684464fd202df86762c636 100644 --- a/mm/internal.h +++ b/mm/internal.h @@ -198,6 +198,7 @@ struct compact_control { const int classzone_idx; /* zone index of a direct compactor */ enum migrate_mode mode; /* Async or sync migration mode */ bool ignore_skip_hint; /* Scan blocks even if marked skip */ + bool no_set_skip_hint; /* Don't mark blocks for skipping */ bool ignore_block_suitable; /* Scan blocks considered unsuitable */ bool direct_compaction; /* False from kcompactd or /proc/... */ bool whole_zone; /* Whole zone should/has been scanned */ diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 55ded92f9809e0ff798589658e87bd1c85bc69a0..d4096f4a5c1f75a276620b89cad5e2ed8878d0b0 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -7619,6 +7619,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, + .no_set_skip_hint = true, .gfp_mask = current_gfp_context(gfp_mask), }; INIT_LIST_HEAD(&cc.migratepages);