aboutsummaryrefslogtreecommitdiffstats
path: root/mm/vmscan.c
diff options
context:
space:
mode:
authorHillf Danton <dhillf@gmail.com>2012-03-21 19:33:50 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-03-21 20:54:56 -0400
commitc38446cc65e1f2b3eb8630c53943b94c4f65f670 (patch)
tree0eb0e73d2bef37bc1ce8212bf5dd43abdc2b5328 /mm/vmscan.c
parent69c978232aaa99476f9bd002c2a29a84fa3779b5 (diff)
mm: vmscan: fix misused nr_reclaimed in shrink_mem_cgroup_zone()
The value of nr_reclaimed is the number of pages reclaimed in the current round of the loop, whereas nr_to_reclaim should be compared with the number of pages reclaimed in all rounds. In each round of the loop, reclaimed pages are cut off from the reclaim goal, and the loop stops once the goal achieved. Signed-off-by: Hillf Danton <dhillf@gmail.com> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Mel Gorman <mgorman@suse.de> Cc: Rik van Riel <riel@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Michal Hocko <mhocko@suse.cz> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/vmscan.c')
-rw-r--r--mm/vmscan.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 61a66881235d..8dfa59866af2 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2112,7 +2112,12 @@ restart:
2112 * with multiple processes reclaiming pages, the total 2112 * with multiple processes reclaiming pages, the total
2113 * freeing target can get unreasonably large. 2113 * freeing target can get unreasonably large.
2114 */ 2114 */
2115 if (nr_reclaimed >= nr_to_reclaim && priority < DEF_PRIORITY) 2115 if (nr_reclaimed >= nr_to_reclaim)
2116 nr_to_reclaim = 0;
2117 else
2118 nr_to_reclaim -= nr_reclaimed;
2119
2120 if (!nr_to_reclaim && priority < DEF_PRIORITY)
2116 break; 2121 break;
2117 } 2122 }
2118 blk_finish_plug(&plug); 2123 blk_finish_plug(&plug);