diff options
Diffstat (limited to 'mm/compaction.c')
| -rw-r--r-- | mm/compaction.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/mm/compaction.c b/mm/compaction.c index de3e1e71cd9f..585de54dbe8c 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -1658,14 +1658,15 @@ static void __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc)  				!compaction_deferred(zone, cc->order))  			compact_zone(zone, cc); -		if (cc->order > 0) { -			if (zone_watermark_ok(zone, cc->order, -						low_wmark_pages(zone), 0, 0)) -				compaction_defer_reset(zone, cc->order, false); -		} -  		VM_BUG_ON(!list_empty(&cc->freepages));  		VM_BUG_ON(!list_empty(&cc->migratepages)); + +		if (is_via_compact_memory(cc->order)) +			continue; + +		if (zone_watermark_ok(zone, cc->order, +				low_wmark_pages(zone), 0, 0)) +			compaction_defer_reset(zone, cc->order, false);  	}  } @@ -1708,7 +1709,10 @@ static void compact_nodes(void)  /* The written value is actually unused, all memory is compacted */  int sysctl_compact_memory; -/* This is the entry point for compacting all nodes via /proc/sys/vm */ +/* + * This is the entry point for compacting all nodes via + * /proc/sys/vm/compact_memory + */  int sysctl_compaction_handler(struct ctl_table *table, int write,  			void __user *buffer, size_t *length, loff_t *ppos)  {  | 
