|
@@ -2510,18 +2510,18 @@ loop_again:
|
|
|
KSWAPD_ZONE_BALANCE_GAP_RATIO);
|
|
|
if (!zone_watermark_ok_safe(zone, order,
|
|
|
high_wmark_pages(zone) + balance_gap,
|
|
|
- end_zone, 0))
|
|
|
+ end_zone, 0)) {
|
|
|
shrink_zone(priority, zone, &sc);
|
|
|
- reclaim_state->reclaimed_slab = 0;
|
|
|
- nr_slab = shrink_slab(&shrink, sc.nr_scanned, lru_pages);
|
|
|
- sc.nr_reclaimed += reclaim_state->reclaimed_slab;
|
|
|
- total_scanned += sc.nr_scanned;
|
|
|
|
|
|
- if (zone->all_unreclaimable)
|
|
|
- continue;
|
|
|
- if (nr_slab == 0 &&
|
|
|
- !zone_reclaimable(zone))
|
|
|
- zone->all_unreclaimable = 1;
|
|
|
+ reclaim_state->reclaimed_slab = 0;
|
|
|
+ nr_slab = shrink_slab(&shrink, sc.nr_scanned, lru_pages);
|
|
|
+ sc.nr_reclaimed += reclaim_state->reclaimed_slab;
|
|
|
+ total_scanned += sc.nr_scanned;
|
|
|
+
|
|
|
+ if (nr_slab == 0 && !zone_reclaimable(zone))
|
|
|
+ zone->all_unreclaimable = 1;
|
|
|
+ }
|
|
|
+
|
|
|
/*
|
|
|
* If we've done a decent amount of scanning and
|
|
|
* the reclaim ratio is low, start doing writepage
|
|
@@ -2531,6 +2531,9 @@ loop_again:
|
|
|
total_scanned > sc.nr_reclaimed + sc.nr_reclaimed / 2)
|
|
|
sc.may_writepage = 1;
|
|
|
|
|
|
+ if (zone->all_unreclaimable)
|
|
|
+ continue;
|
|
|
+
|
|
|
if (!zone_watermark_ok_safe(zone, order,
|
|
|
high_wmark_pages(zone), end_zone, 0)) {
|
|
|
all_zones_ok = 0;
|