The commit is pushed to "branch-rh7-3.10.0-229.7.2-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh7-3.10.0-229.7.2.vz7.6.3 ------> commit 338ce9637d706f2bf01ef9153b78953ff65c2efb Author: Vladimir Davydov <vdavy...@parallels.com> Date: Fri Aug 28 18:36:03 2015 +0400
memcg: fix swap_max calculation for nested cgroups If there is a sub-memcg in a container, its swapout won't update swap_max of the container's memcg, because we don't ascend the memcg hierarchy in mem_cgroup_update_swap_max. This patch fixes this issue. Fixes: a74376e2dde13 ("bc/memcg: show correct swap max for beancounters") Signed-off-by: Vladimir Davydov <vdavy...@parallels.com> --- mm/memcontrol.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 5f3e0ac..7fc2931 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -903,12 +903,14 @@ static void mem_cgroup_update_swap_max(struct mem_cgroup *memcg) { long long swap; - swap = res_counter_read_u64(&memcg->memsw, RES_USAGE) - - res_counter_read_u64(&memcg->res, RES_USAGE); + for (; memcg; memcg = parent_mem_cgroup(memcg)) { + swap = res_counter_read_u64(&memcg->memsw, RES_USAGE) - + res_counter_read_u64(&memcg->res, RES_USAGE); - /* This is racy, but we don't have to be absolutely precise */ - if (swap > (long long)memcg->swap_max) - memcg->swap_max = swap; + /* This is racy, but we don't have to be absolutely precise */ + if (swap > (long long)memcg->swap_max) + memcg->swap_max = swap; + } } static void mem_cgroup_inc_failcnt(struct mem_cgroup *memcg, _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel