X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=mm%2Fvmscan.c;h=bc58802663be83a8db2934376e252996e473f614;hb=afddba49d18f346e5cc2938b6ed7c512db18ca68;hp=a6e65d024995ad49a1e9675dea9d36b343ceda60;hpb=519ef1af47bb7379c4c06aeba2d78073df92c151;p=linux-2.6 diff --git a/mm/vmscan.c b/mm/vmscan.c index a6e65d0249..bc58802663 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1371,7 +1371,13 @@ loop_again: temp_priority[i] = priority; sc.nr_scanned = 0; note_zone_scanning_priority(zone, priority); - nr_reclaimed += shrink_zone(priority, zone, &sc); + /* + * We put equal pressure on every zone, unless one + * zone has way too many pages free already. + */ + if (!zone_watermark_ok(zone, order, 8*zone->pages_high, + end_zone, 0)) + nr_reclaimed += shrink_zone(priority, zone, &sc); reclaim_state->reclaimed_slab = 0; nr_slab = shrink_slab(sc.nr_scanned, GFP_KERNEL, lru_pages);