aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/vmscan.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 04c49fe781fe..a0245861934a 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2510,18 +2510,18 @@ loop_again:
2510 KSWAPD_ZONE_BALANCE_GAP_RATIO); 2510 KSWAPD_ZONE_BALANCE_GAP_RATIO);
2511 if (!zone_watermark_ok_safe(zone, order, 2511 if (!zone_watermark_ok_safe(zone, order,
2512 high_wmark_pages(zone) + balance_gap, 2512 high_wmark_pages(zone) + balance_gap,
2513 end_zone, 0)) 2513 end_zone, 0)) {
2514 shrink_zone(priority, zone, &sc); 2514 shrink_zone(priority, zone, &sc);
2515 reclaim_state->reclaimed_slab = 0;
2516 nr_slab = shrink_slab(&shrink, sc.nr_scanned, lru_pages);
2517 sc.nr_reclaimed += reclaim_state->reclaimed_slab;
2518 total_scanned += sc.nr_scanned;
2519 2515
2520 if (zone->all_unreclaimable) 2516 reclaim_state->reclaimed_slab = 0;
2521 continue; 2517 nr_slab = shrink_slab(&shrink, sc.nr_scanned, lru_pages);
2522 if (nr_slab == 0 && 2518 sc.nr_reclaimed += reclaim_state->reclaimed_slab;
2523 !zone_reclaimable(zone)) 2519 total_scanned += sc.nr_scanned;
2524 zone->all_unreclaimable = 1; 2520
2521 if (nr_slab == 0 && !zone_reclaimable(zone))
2522 zone->all_unreclaimable = 1;
2523 }
2524
2525 /* 2525 /*
2526 * If we've done a decent amount of scanning and 2526 * If we've done a decent amount of scanning and
2527 * the reclaim ratio is low, start doing writepage 2527 * the reclaim ratio is low, start doing writepage
@@ -2531,6 +2531,9 @@ loop_again:
2531 total_scanned > sc.nr_reclaimed + sc.nr_reclaimed / 2) 2531 total_scanned > sc.nr_reclaimed + sc.nr_reclaimed / 2)
2532 sc.may_writepage = 1; 2532 sc.may_writepage = 1;
2533 2533
2534 if (zone->all_unreclaimable)
2535 continue;
2536
2534 if (!zone_watermark_ok_safe(zone, order, 2537 if (!zone_watermark_ok_safe(zone, order,
2535 high_wmark_pages(zone), end_zone, 0)) { 2538 high_wmark_pages(zone), end_zone, 0)) {
2536 all_zones_ok = 0; 2539 all_zones_ok = 0;