|
@@ -3095,29 +3095,6 @@ int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-char *memcg_create_cache_name(struct mem_cgroup *memcg,
|
|
|
- struct kmem_cache *root_cache)
|
|
|
-{
|
|
|
- static char *buf;
|
|
|
-
|
|
|
- /*
|
|
|
- * We need a mutex here to protect the shared buffer. Since this is
|
|
|
- * expected to be called only on cache creation, we can employ the
|
|
|
- * slab_mutex for that purpose.
|
|
|
- */
|
|
|
- lockdep_assert_held(&slab_mutex);
|
|
|
-
|
|
|
- if (!buf) {
|
|
|
- buf = kmalloc(NAME_MAX + 1, GFP_KERNEL);
|
|
|
- if (!buf)
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- cgroup_name(memcg->css.cgroup, buf, NAME_MAX + 1);
|
|
|
- return kasprintf(GFP_KERNEL, "%s(%d:%s)", root_cache->name,
|
|
|
- memcg_cache_id(memcg), buf);
|
|
|
-}
|
|
|
-
|
|
|
int memcg_alloc_cache_params(struct mem_cgroup *memcg, struct kmem_cache *s,
|
|
|
struct kmem_cache *root_cache)
|
|
|
{
|
|
@@ -3158,6 +3135,7 @@ void memcg_free_cache_params(struct kmem_cache *s)
|
|
|
static void memcg_kmem_create_cache(struct mem_cgroup *memcg,
|
|
|
struct kmem_cache *root_cache)
|
|
|
{
|
|
|
+ static char *memcg_name_buf; /* protected by memcg_slab_mutex */
|
|
|
struct kmem_cache *cachep;
|
|
|
int id;
|
|
|
|
|
@@ -3173,7 +3151,14 @@ static void memcg_kmem_create_cache(struct mem_cgroup *memcg,
|
|
|
if (cache_from_memcg_idx(root_cache, id))
|
|
|
return;
|
|
|
|
|
|
- cachep = kmem_cache_create_memcg(memcg, root_cache);
|
|
|
+ if (!memcg_name_buf) {
|
|
|
+ memcg_name_buf = kmalloc(NAME_MAX + 1, GFP_KERNEL);
|
|
|
+ if (!memcg_name_buf)
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ cgroup_name(memcg->css.cgroup, memcg_name_buf, NAME_MAX + 1);
|
|
|
+ cachep = kmem_cache_create_memcg(memcg, root_cache, memcg_name_buf);
|
|
|
/*
|
|
|
* If we could not create a memcg cache, do not complain, because
|
|
|
* that's not critical at all as we can always proceed with the root
|