|
@@ -1124,12 +1124,11 @@ static void __compact_pgdat(pg_data_t *pgdat, struct compact_control *cc)
|
|
compact_zone(zone, cc);
|
|
compact_zone(zone, cc);
|
|
|
|
|
|
if (cc->order > 0) {
|
|
if (cc->order > 0) {
|
|
- int ok = zone_watermark_ok(zone, cc->order,
|
|
|
|
- low_wmark_pages(zone), 0, 0);
|
|
|
|
- if (ok && cc->order >= zone->compact_order_failed)
|
|
|
|
- zone->compact_order_failed = cc->order + 1;
|
|
|
|
|
|
+ if (zone_watermark_ok(zone, cc->order,
|
|
|
|
+ low_wmark_pages(zone), 0, 0))
|
|
|
|
+ compaction_defer_reset(zone, cc->order, false);
|
|
/* Currently async compaction is never deferred. */
|
|
/* Currently async compaction is never deferred. */
|
|
- else if (!ok && cc->sync)
|
|
|
|
|
|
+ else if (cc->sync)
|
|
defer_compaction(zone, cc->order);
|
|
defer_compaction(zone, cc->order);
|
|
}
|
|
}
|
|
|
|
|