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: Vladimir Davydov <vdavydov@parallels.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Michal Hocko <mhocko@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
7d5e324573
commit
8c0145b62e
|
@ -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,
|
||||||
}
|
}
|
||||||
|
|
||||||
#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 @@ out:
|
||||||
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)
|
||||||
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
|
||||||
|
|
Loading…
Reference in a new issue