diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2012-12-27 19:39:54 +0100 |
---|---|---|
committer | Ben Hutchings <ben@decadent.org.uk> | 2013-01-03 03:33:55 +0000 |
commit | 40686464a6c29b4d8f5ef1d6c86117022e46ecd1 (patch) | |
tree | e270f7300ad8dcf2508aa074ff6fb4800a60e501 /mm | |
parent | fa1dd81ceffee58d0340a48c593ec5474e8e4f84 (diff) |
Revert "mm: vmscan: fix endless loop in kswapd balancing"
This reverts commit 39d18dc4b8b0c000fa681cbae10ac3f8a132814b which
was commit 60cefed485a02bd99b6299dad70666fe49245da7 upstream.
This was not needed and is not suitable for 3.2.y.
Reported-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmscan.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 1e4ee1acd2b..313381cc88a 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2492,19 +2492,6 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont, } #endif -static bool zone_balanced(struct zone *zone, int order, - unsigned long balance_gap, int classzone_idx) -{ - if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone) + - balance_gap, classzone_idx, 0)) - return false; - - if (COMPACTION_BUILD && order && !compaction_suitable(zone, order)) - return false; - - return true; -} - /* * pgdat_balanced is used when checking if a node is balanced for high-order * allocations. Only zones that meet watermarks and are in a zone allowed @@ -2564,7 +2551,8 @@ static bool sleeping_prematurely(pg_data_t *pgdat, int order, long remaining, continue; } - if (!zone_balanced(zone, order, 0, i)) + if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone), + i, 0)) all_zones_ok = false; else balanced += zone->present_pages; @@ -2667,7 +2655,8 @@ loop_again: shrink_active_list(SWAP_CLUSTER_MAX, zone, &sc, priority, 0); - if (!zone_balanced(zone, order, 0, 0)) { + if (!zone_watermark_ok_safe(zone, order, + high_wmark_pages(zone), 0, 0)) { end_zone = i; break; } else { @@ -2728,8 +2717,9 @@ loop_again: (zone->present_pages + KSWAPD_ZONE_BALANCE_GAP_RATIO-1) / KSWAPD_ZONE_BALANCE_GAP_RATIO); - if (!zone_balanced(zone, order, - balance_gap, end_zone)) { + if (!zone_watermark_ok_safe(zone, order, + high_wmark_pages(zone) + balance_gap, + end_zone, 0)) { shrink_zone(priority, zone, &sc); reclaim_state->reclaimed_slab = 0; @@ -2756,7 +2746,8 @@ loop_again: continue; } - if (!zone_balanced(zone, order, 0, end_zone)) { + if (!zone_watermark_ok_safe(zone, order, + high_wmark_pages(zone), end_zone, 0)) { all_zones_ok = 0; /* * We are still under min water mark. This |