diff options
author | Vladimir Davydov <vdavydov@virtuozzo.com> | 2016-02-02 19:57:49 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-02-03 11:28:43 -0500 |
commit | 3c1da7beeee02560cd0f0c66c5a59fce3c6746e3 (patch) | |
tree | 2fc9b86f2fc86e7a720b4088aa0a46d4ae1cf909 /mm | |
parent | 30bdbb78009e67767983085e302bec6d97afc679 (diff) |
mm/vmpressure.c: fix subtree pressure detection
When vmpressure is called for the entire subtree under pressure we
mistakenly use vmpressure->scanned instead of vmpressure->tree_scanned
when checking if vmpressure work is to be scheduled. This results in
suppressing all vmpressure events in the legacy cgroup hierarchy. Fix it.
Fixes: 8e8ae645249b ("mm: memcontrol: hook up vmpressure to socket pressure")
Signed-off-by: Vladimir Davydov <vdavydov@virtuozzo.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmpressure.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/mm/vmpressure.c b/mm/vmpressure.c index 9a6c0704211c..149fdf6c5c56 100644 --- a/mm/vmpressure.c +++ b/mm/vmpressure.c | |||
@@ -248,9 +248,8 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree, | |||
248 | 248 | ||
249 | if (tree) { | 249 | if (tree) { |
250 | spin_lock(&vmpr->sr_lock); | 250 | spin_lock(&vmpr->sr_lock); |
251 | vmpr->tree_scanned += scanned; | 251 | scanned = vmpr->tree_scanned += scanned; |
252 | vmpr->tree_reclaimed += reclaimed; | 252 | vmpr->tree_reclaimed += reclaimed; |
253 | scanned = vmpr->scanned; | ||
254 | spin_unlock(&vmpr->sr_lock); | 253 | spin_unlock(&vmpr->sr_lock); |
255 | 254 | ||
256 | if (scanned < vmpressure_win) | 255 | if (scanned < vmpressure_win) |