From: Hillf Danton Date: Wed, 21 Mar 2012 23:33:50 +0000 (-0700) Subject: mm: vmscan: fix misused nr_reclaimed in shrink_mem_cgroup_zone() X-Git-Tag: v3.4-rc1~158^2~75 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c38446cc65e1f2b3eb8630c53943b94c4f65f670;p=profile%2Fivi%2Fkernel-adaptation-intel-automotive.git 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 Cc: KOSAKI Motohiro Cc: Mel Gorman Cc: Rik van Riel Cc: Hugh Dickins Cc: Michal Hocko Cc: KAMEZAWA Hiroyuki Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/vmscan.c b/mm/vmscan.c index 61a6688..8dfa598 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2112,7 +2112,12 @@ restart: * with multiple processes reclaiming pages, the total * freeing target can get unreasonably large. */ - if (nr_reclaimed >= nr_to_reclaim && priority < DEF_PRIORITY) + if (nr_reclaimed >= nr_to_reclaim) + nr_to_reclaim = 0; + else + nr_to_reclaim -= nr_reclaimed; + + if (!nr_to_reclaim && priority < DEF_PRIORITY) break; } blk_finish_plug(&plug);