diff options
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r-- | mm/vmscan.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index ec5ddccbf82e..c391c320dbaf 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -1969,9 +1969,10 @@ unsigned long try_to_free_pages(struct zonelist *zonelist, int order, | |||
1969 | unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, | 1969 | unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, |
1970 | gfp_t gfp_mask, bool noswap, | 1970 | gfp_t gfp_mask, bool noswap, |
1971 | unsigned int swappiness, | 1971 | unsigned int swappiness, |
1972 | struct zone *zone, int nid) | 1972 | struct zone *zone) |
1973 | { | 1973 | { |
1974 | struct scan_control sc = { | 1974 | struct scan_control sc = { |
1975 | .nr_to_reclaim = SWAP_CLUSTER_MAX, | ||
1975 | .may_writepage = !laptop_mode, | 1976 | .may_writepage = !laptop_mode, |
1976 | .may_unmap = 1, | 1977 | .may_unmap = 1, |
1977 | .may_swap = !noswap, | 1978 | .may_swap = !noswap, |
@@ -1979,13 +1980,8 @@ unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem, | |||
1979 | .order = 0, | 1980 | .order = 0, |
1980 | .mem_cgroup = mem, | 1981 | .mem_cgroup = mem, |
1981 | }; | 1982 | }; |
1982 | nodemask_t nm = nodemask_of_node(nid); | ||
1983 | |||
1984 | sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) | | 1983 | sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) | |
1985 | (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK); | 1984 | (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK); |
1986 | sc.nodemask = &nm; | ||
1987 | sc.nr_reclaimed = 0; | ||
1988 | sc.nr_scanned = 0; | ||
1989 | 1985 | ||
1990 | trace_mm_vmscan_memcg_softlimit_reclaim_begin(0, | 1986 | trace_mm_vmscan_memcg_softlimit_reclaim_begin(0, |
1991 | sc.may_writepage, | 1987 | sc.may_writepage, |
@@ -2172,7 +2168,6 @@ loop_again: | |||
2172 | for (i = 0; i <= end_zone; i++) { | 2168 | for (i = 0; i <= end_zone; i++) { |
2173 | struct zone *zone = pgdat->node_zones + i; | 2169 | struct zone *zone = pgdat->node_zones + i; |
2174 | int nr_slab; | 2170 | int nr_slab; |
2175 | int nid, zid; | ||
2176 | 2171 | ||
2177 | if (!populated_zone(zone)) | 2172 | if (!populated_zone(zone)) |
2178 | continue; | 2173 | continue; |
@@ -2182,14 +2177,12 @@ loop_again: | |||
2182 | 2177 | ||
2183 | sc.nr_scanned = 0; | 2178 | sc.nr_scanned = 0; |
2184 | 2179 | ||
2185 | nid = pgdat->node_id; | ||
2186 | zid = zone_idx(zone); | ||
2187 | /* | 2180 | /* |
2188 | * Call soft limit reclaim before calling shrink_zone. | 2181 | * Call soft limit reclaim before calling shrink_zone. |
2189 | * For now we ignore the return value | 2182 | * For now we ignore the return value |
2190 | */ | 2183 | */ |
2191 | mem_cgroup_soft_limit_reclaim(zone, order, sc.gfp_mask, | 2184 | mem_cgroup_soft_limit_reclaim(zone, order, sc.gfp_mask); |
2192 | nid, zid); | 2185 | |
2193 | /* | 2186 | /* |
2194 | * We put equal pressure on every zone, unless one | 2187 | * We put equal pressure on every zone, unless one |
2195 | * zone has way too many pages free already. | 2188 | * zone has way too many pages free already. |