|
@@ -2374,12 +2374,16 @@ static unsigned long do_try_to_free_pages(struct zonelist *zonelist,
|
|
|
*/
|
|
|
if (global_reclaim(sc)) {
|
|
|
unsigned long lru_pages = 0;
|
|
|
+
|
|
|
+ nodes_clear(shrink->nodes_to_scan);
|
|
|
for_each_zone_zonelist(zone, z, zonelist,
|
|
|
gfp_zone(sc->gfp_mask)) {
|
|
|
if (!cpuset_zone_allowed_hardwall(zone, GFP_KERNEL))
|
|
|
continue;
|
|
|
|
|
|
lru_pages += zone_reclaimable_pages(zone);
|
|
|
+ node_set(zone_to_nid(zone),
|
|
|
+ shrink->nodes_to_scan);
|
|
|
}
|
|
|
|
|
|
shrink_slab(shrink, sc->nr_scanned, lru_pages);
|
|
@@ -2836,6 +2840,8 @@ static bool kswapd_shrink_zone(struct zone *zone,
|
|
|
return true;
|
|
|
|
|
|
shrink_zone(zone, sc);
|
|
|
+ nodes_clear(shrink.nodes_to_scan);
|
|
|
+ node_set(zone_to_nid(zone), shrink.nodes_to_scan);
|
|
|
|
|
|
reclaim_state->reclaimed_slab = 0;
|
|
|
nr_slab = shrink_slab(&shrink, sc->nr_scanned, lru_pages);
|
|
@@ -3544,10 +3550,9 @@ static int __zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
|
|
|
* number of slab pages and shake the slab until it is reduced
|
|
|
* by the same nr_pages that we used for reclaiming unmapped
|
|
|
* pages.
|
|
|
- *
|
|
|
- * Note that shrink_slab will free memory on all zones and may
|
|
|
- * take a long time.
|
|
|
*/
|
|
|
+ nodes_clear(shrink.nodes_to_scan);
|
|
|
+ node_set(zone_to_nid(zone), shrink.nodes_to_scan);
|
|
|
for (;;) {
|
|
|
unsigned long lru_pages = zone_reclaimable_pages(zone);
|
|
|
|