diff options
author | Johannes Weiner <hannes@cmpxchg.org> | 2016-01-21 02:02:21 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-21 04:09:18 +0300 |
commit | b15aac110a45c52d7f47ab8ee2d68f98044cfe6c (patch) | |
tree | 1cfa36fc2070f647841100f15ce953268a7ad86b /mm/memcontrol.c | |
parent | 6d378dac7c4905db38f8127c4e618f0f627a4ced (diff) | |
download | linux-b15aac110a45c52d7f47ab8ee2d68f98044cfe6c.tar.xz |
mm: memcontrol: remove double kmem page_counter init
The kmem page_counter's limit is initialized to PAGE_COUNTER_MAX inside
mem_cgroup_css_online(). There is no need to repeat this from
memcg_propagate_kmem().
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Tejun Heo <tj@kernel.org>
Acked-by: Vladimir Davydov <vdavydov@virtuozzo.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r-- | mm/memcontrol.c | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index f21f29cd14f9..71dced17b16d 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2861,8 +2861,7 @@ static u64 mem_cgroup_read_u64(struct cgroup_subsys_state *css, } #ifdef CONFIG_MEMCG_KMEM -static int memcg_activate_kmem(struct mem_cgroup *memcg, - unsigned long nr_pages) +static int memcg_activate_kmem(struct mem_cgroup *memcg) { int err = 0; int memcg_id; @@ -2897,13 +2896,6 @@ static int memcg_activate_kmem(struct mem_cgroup *memcg, goto out; } - /* - * We couldn't have accounted to this cgroup, because it hasn't got - * activated yet, so this should succeed. - */ - err = page_counter_limit(&memcg->kmem, nr_pages); - VM_BUG_ON(err); - static_branch_inc(&memcg_kmem_enabled_key); /* * A memory cgroup is considered kmem-active as soon as it gets @@ -2924,10 +2916,14 @@ static int memcg_update_kmem_limit(struct mem_cgroup *memcg, int ret; mutex_lock(&memcg_limit_mutex); - if (!memcg_kmem_is_active(memcg)) - ret = memcg_activate_kmem(memcg, limit); - else - ret = page_counter_limit(&memcg->kmem, limit); + /* Top-level cgroup doesn't propagate from root */ + if (!memcg_kmem_is_active(memcg)) { + ret = memcg_activate_kmem(memcg); + if (ret) + goto out; + } + ret = page_counter_limit(&memcg->kmem, limit); +out: mutex_unlock(&memcg_limit_mutex); return ret; } @@ -2946,7 +2942,7 @@ static int memcg_propagate_kmem(struct mem_cgroup *memcg) * after this point, because it has at least one child already. */ if (memcg_kmem_is_active(parent)) - ret = memcg_activate_kmem(memcg, PAGE_COUNTER_MAX); + ret = memcg_activate_kmem(memcg); mutex_unlock(&memcg_limit_mutex); return ret; } |