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: 8e8ae64524
("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>
This commit is contained in:
Родитель
30bdbb7800
Коммит
3c1da7beee
|
@ -248,9 +248,8 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
|
||||||
|
|
||||||
if (tree) {
|
if (tree) {
|
||||||
spin_lock(&vmpr->sr_lock);
|
spin_lock(&vmpr->sr_lock);
|
||||||
vmpr->tree_scanned += scanned;
|
scanned = vmpr->tree_scanned += scanned;
|
||||||
vmpr->tree_reclaimed += reclaimed;
|
vmpr->tree_reclaimed += reclaimed;
|
||||||
scanned = vmpr->scanned;
|
|
||||||
spin_unlock(&vmpr->sr_lock);
|
spin_unlock(&vmpr->sr_lock);
|
||||||
|
|
||||||
if (scanned < vmpressure_win)
|
if (scanned < vmpressure_win)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче