|
|
@@ -1698,9 +1698,8 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order,
|
|
|
alloc_flags, ac_classzone_idx(ac));
|
|
|
rc = max(status, rc);
|
|
|
|
|
|
- /* If a normal allocation would succeed, stop compacting */
|
|
|
- if (zone_watermark_ok(zone, order, low_wmark_pages(zone),
|
|
|
- ac_classzone_idx(ac), alloc_flags)) {
|
|
|
+ /* The allocation should succeed, stop compacting */
|
|
|
+ if (status == COMPACT_SUCCESS) {
|
|
|
/*
|
|
|
* We think the allocation will succeed in this zone,
|
|
|
* but it is not certain, hence the false. The caller
|
|
|
@@ -1873,8 +1872,6 @@ static void kcompactd_do_work(pg_data_t *pgdat)
|
|
|
.ignore_skip_hint = true,
|
|
|
|
|
|
};
|
|
|
- bool success = false;
|
|
|
-
|
|
|
trace_mm_compaction_kcompactd_wake(pgdat->node_id, cc.order,
|
|
|
cc.classzone_idx);
|
|
|
count_vm_event(KCOMPACTD_WAKE);
|
|
|
@@ -1903,9 +1900,7 @@ static void kcompactd_do_work(pg_data_t *pgdat)
|
|
|
return;
|
|
|
status = compact_zone(zone, &cc);
|
|
|
|
|
|
- if (zone_watermark_ok(zone, cc.order, low_wmark_pages(zone),
|
|
|
- cc.classzone_idx, 0)) {
|
|
|
- success = true;
|
|
|
+ if (status == COMPACT_SUCCESS) {
|
|
|
compaction_defer_reset(zone, cc.order, false);
|
|
|
} else if (status == COMPACT_PARTIAL_SKIPPED || status == COMPACT_COMPLETE) {
|
|
|
/*
|