|
@@ -183,6 +183,7 @@ extern int user_min_free_kbytes;
|
|
struct compact_control {
|
|
struct compact_control {
|
|
struct list_head freepages; /* List of free pages to migrate to */
|
|
struct list_head freepages; /* List of free pages to migrate to */
|
|
struct list_head migratepages; /* List of pages being migrated */
|
|
struct list_head migratepages; /* List of pages being migrated */
|
|
|
|
+ struct zone *zone;
|
|
unsigned long nr_freepages; /* Number of isolated free pages */
|
|
unsigned long nr_freepages; /* Number of isolated free pages */
|
|
unsigned long nr_migratepages; /* Number of pages to migrate */
|
|
unsigned long nr_migratepages; /* Number of pages to migrate */
|
|
unsigned long total_migrate_scanned;
|
|
unsigned long total_migrate_scanned;
|
|
@@ -190,16 +191,15 @@ struct compact_control {
|
|
unsigned long free_pfn; /* isolate_freepages search base */
|
|
unsigned long free_pfn; /* isolate_freepages search base */
|
|
unsigned long migrate_pfn; /* isolate_migratepages search base */
|
|
unsigned long migrate_pfn; /* isolate_migratepages search base */
|
|
unsigned long last_migrated_pfn;/* Not yet flushed page being freed */
|
|
unsigned long last_migrated_pfn;/* Not yet flushed page being freed */
|
|
|
|
+ const gfp_t gfp_mask; /* gfp mask of a direct compactor */
|
|
|
|
+ int order; /* order a direct compactor needs */
|
|
|
|
+ const unsigned int alloc_flags; /* alloc flags of a direct compactor */
|
|
|
|
+ const int classzone_idx; /* zone index of a direct compactor */
|
|
enum migrate_mode mode; /* Async or sync migration mode */
|
|
enum migrate_mode mode; /* Async or sync migration mode */
|
|
bool ignore_skip_hint; /* Scan blocks even if marked skip */
|
|
bool ignore_skip_hint; /* Scan blocks even if marked skip */
|
|
bool ignore_block_suitable; /* Scan blocks considered unsuitable */
|
|
bool ignore_block_suitable; /* Scan blocks considered unsuitable */
|
|
bool direct_compaction; /* False from kcompactd or /proc/... */
|
|
bool direct_compaction; /* False from kcompactd or /proc/... */
|
|
bool whole_zone; /* Whole zone should/has been scanned */
|
|
bool whole_zone; /* Whole zone should/has been scanned */
|
|
- int order; /* order a direct compactor needs */
|
|
|
|
- const gfp_t gfp_mask; /* gfp mask of a direct compactor */
|
|
|
|
- const unsigned int alloc_flags; /* alloc flags of a direct compactor */
|
|
|
|
- const int classzone_idx; /* zone index of a direct compactor */
|
|
|
|
- struct zone *zone;
|
|
|
|
bool contended; /* Signal lock or sched contention */
|
|
bool contended; /* Signal lock or sched contention */
|
|
};
|
|
};
|
|
|
|
|