|
@@ -3012,6 +3012,8 @@ void memcg_update_array_size(int num)
|
|
memcg_limited_groups_array_size = memcg_caches_array_size(num);
|
|
memcg_limited_groups_array_size = memcg_caches_array_size(num);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void kmem_cache_destroy_work_func(struct work_struct *w);
|
|
|
|
+
|
|
int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
|
|
int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
|
|
{
|
|
{
|
|
struct memcg_cache_params *cur_params = s->memcg_params;
|
|
struct memcg_cache_params *cur_params = s->memcg_params;
|
|
@@ -3031,6 +3033,8 @@ int memcg_update_cache_size(struct kmem_cache *s, int num_groups)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ INIT_WORK(&s->memcg_params->destroy,
|
|
|
|
+ kmem_cache_destroy_work_func);
|
|
s->memcg_params->is_root_cache = true;
|
|
s->memcg_params->is_root_cache = true;
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -3078,6 +3082,8 @@ int memcg_register_cache(struct mem_cgroup *memcg, struct kmem_cache *s,
|
|
if (!s->memcg_params)
|
|
if (!s->memcg_params)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
|
|
+ INIT_WORK(&s->memcg_params->destroy,
|
|
|
|
+ kmem_cache_destroy_work_func);
|
|
if (memcg) {
|
|
if (memcg) {
|
|
s->memcg_params->memcg = memcg;
|
|
s->memcg_params->memcg = memcg;
|
|
s->memcg_params->root_cache = root_cache;
|
|
s->memcg_params->root_cache = root_cache;
|
|
@@ -3358,8 +3364,6 @@ static void mem_cgroup_destroy_all_caches(struct mem_cgroup *memcg)
|
|
list_for_each_entry(params, &memcg->memcg_slab_caches, list) {
|
|
list_for_each_entry(params, &memcg->memcg_slab_caches, list) {
|
|
cachep = memcg_params_to_cache(params);
|
|
cachep = memcg_params_to_cache(params);
|
|
cachep->memcg_params->dead = true;
|
|
cachep->memcg_params->dead = true;
|
|
- INIT_WORK(&cachep->memcg_params->destroy,
|
|
|
|
- kmem_cache_destroy_work_func);
|
|
|
|
schedule_work(&cachep->memcg_params->destroy);
|
|
schedule_work(&cachep->memcg_params->destroy);
|
|
}
|
|
}
|
|
mutex_unlock(&memcg->slab_caches_mutex);
|
|
mutex_unlock(&memcg->slab_caches_mutex);
|