Commit 8c0145b6 authored by Vladimir Davydov's avatar Vladimir Davydov Committed by Linus Torvalds

memcg: remove activate_kmem_mutex

The activate_kmem_mutex is used to serialize memcg.kmem.limit updates, but
we already serialize them with memcg_limit_mutex so let's remove the
former.
Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 7d5e3245
...@@ -2627,8 +2627,6 @@ static void commit_charge(struct page *page, struct mem_cgroup *memcg, ...@@ -2627,8 +2627,6 @@ static void commit_charge(struct page *page, struct mem_cgroup *memcg,
*/ */
static DEFINE_MUTEX(memcg_slab_mutex); static DEFINE_MUTEX(memcg_slab_mutex);
static DEFINE_MUTEX(activate_kmem_mutex);
/* /*
* This is a bit cumbersome, but it is rarely used and avoids a backpointer * This is a bit cumbersome, but it is rarely used and avoids a backpointer
* in the memcg_cache_params struct. * in the memcg_cache_params struct.
...@@ -3747,9 +3745,8 @@ static u64 mem_cgroup_read_u64(struct cgroup_subsys_state *css, ...@@ -3747,9 +3745,8 @@ static u64 mem_cgroup_read_u64(struct cgroup_subsys_state *css,
} }
#ifdef CONFIG_MEMCG_KMEM #ifdef CONFIG_MEMCG_KMEM
/* should be called with activate_kmem_mutex held */ static int memcg_activate_kmem(struct mem_cgroup *memcg,
static int __memcg_activate_kmem(struct mem_cgroup *memcg, unsigned long nr_pages)
unsigned long nr_pages)
{ {
int err = 0; int err = 0;
int memcg_id; int memcg_id;
...@@ -3811,17 +3808,6 @@ static int __memcg_activate_kmem(struct mem_cgroup *memcg, ...@@ -3811,17 +3808,6 @@ static int __memcg_activate_kmem(struct mem_cgroup *memcg,
return err; return err;
} }
static int memcg_activate_kmem(struct mem_cgroup *memcg,
unsigned long nr_pages)
{
int ret;
mutex_lock(&activate_kmem_mutex);
ret = __memcg_activate_kmem(memcg, nr_pages);
mutex_unlock(&activate_kmem_mutex);
return ret;
}
static int memcg_update_kmem_limit(struct mem_cgroup *memcg, static int memcg_update_kmem_limit(struct mem_cgroup *memcg,
unsigned long limit) unsigned long limit)
{ {
...@@ -3844,14 +3830,14 @@ static int memcg_propagate_kmem(struct mem_cgroup *memcg) ...@@ -3844,14 +3830,14 @@ static int memcg_propagate_kmem(struct mem_cgroup *memcg)
if (!parent) if (!parent)
return 0; return 0;
mutex_lock(&activate_kmem_mutex); mutex_lock(&memcg_limit_mutex);
/* /*
* If the parent cgroup is not kmem-active now, it cannot be activated * If the parent cgroup is not kmem-active now, it cannot be activated
* after this point, because it has at least one child already. * after this point, because it has at least one child already.
*/ */
if (memcg_kmem_is_active(parent)) if (memcg_kmem_is_active(parent))
ret = __memcg_activate_kmem(memcg, PAGE_COUNTER_MAX); ret = memcg_activate_kmem(memcg, PAGE_COUNTER_MAX);
mutex_unlock(&activate_kmem_mutex); mutex_unlock(&memcg_limit_mutex);
return ret; return ret;
} }
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment