|
@@ -946,6 +946,14 @@ static int compact_zone(struct zone *zone, struct compact_control *cc)
|
|
;
|
|
;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Clear pageblock skip if there were failures recently and compaction
|
|
|
|
+ * is about to be retried after being deferred. kswapd does not do
|
|
|
|
+ * this reset as it'll reset the cached information when going to sleep.
|
|
|
|
+ */
|
|
|
|
+ if (compaction_restarting(zone, cc->order) && !current_is_kswapd())
|
|
|
|
+ __reset_isolation_suitable(zone);
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Setup to move all movable pages to the end of the zone. Used cached
|
|
* Setup to move all movable pages to the end of the zone. Used cached
|
|
* information on where the scanners should start but check that it
|
|
* information on where the scanners should start but check that it
|
|
@@ -962,14 +970,6 @@ static int compact_zone(struct zone *zone, struct compact_control *cc)
|
|
zone->compact_cached_migrate_pfn = cc->migrate_pfn;
|
|
zone->compact_cached_migrate_pfn = cc->migrate_pfn;
|
|
}
|
|
}
|
|
|
|
|
|
- /*
|
|
|
|
- * Clear pageblock skip if there were failures recently and compaction
|
|
|
|
- * is about to be retried after being deferred. kswapd does not do
|
|
|
|
- * this reset as it'll reset the cached information when going to sleep.
|
|
|
|
- */
|
|
|
|
- if (compaction_restarting(zone, cc->order) && !current_is_kswapd())
|
|
|
|
- __reset_isolation_suitable(zone);
|
|
|
|
-
|
|
|
|
trace_mm_compaction_begin(start_pfn, cc->migrate_pfn, cc->free_pfn, end_pfn);
|
|
trace_mm_compaction_begin(start_pfn, cc->migrate_pfn, cc->free_pfn, end_pfn);
|
|
|
|
|
|
migrate_prep_local();
|
|
migrate_prep_local();
|