mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
cgroup: get rid of populate for memcg
The last man standing justifying the need for populate() is the sock memcg initialization functions. Now that we are able to pass a struct mem_cgroup instead of a struct cgroup to the socket initialization, there is nothing that stops us from initializing everything in create(). Signed-off-by: Glauber Costa <glommer@parallels.com> Acked-by: Kamezawa Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Tejun Heo <tj@kernel.org> CC: Li Zefan <lizefan@huawei.com> CC: Johannes Weiner <hannes@cmpxchg.org> CC: Michal Hocko <mhocko@suse.cz>
This commit is contained in:
parent
1d62e43657
commit
cbe128e348
1 changed files with 13 additions and 10 deletions
|
@ -4640,7 +4640,7 @@ static int mem_control_numa_stat_open(struct inode *unused, struct file *file)
|
||||||
#endif /* CONFIG_NUMA */
|
#endif /* CONFIG_NUMA */
|
||||||
|
|
||||||
#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
|
#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
|
||||||
static int register_kmem_files(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
|
static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
|
||||||
{
|
{
|
||||||
return mem_cgroup_sockets_init(memcg, ss);
|
return mem_cgroup_sockets_init(memcg, ss);
|
||||||
};
|
};
|
||||||
|
@ -4650,7 +4650,7 @@ static void kmem_cgroup_destroy(struct mem_cgroup *memcg)
|
||||||
mem_cgroup_sockets_destroy(memcg);
|
mem_cgroup_sockets_destroy(memcg);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static int register_kmem_files(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
|
static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -5010,6 +5010,17 @@ mem_cgroup_create(struct cgroup *cont)
|
||||||
memcg->move_charge_at_immigrate = 0;
|
memcg->move_charge_at_immigrate = 0;
|
||||||
mutex_init(&memcg->thresholds_lock);
|
mutex_init(&memcg->thresholds_lock);
|
||||||
spin_lock_init(&memcg->move_lock);
|
spin_lock_init(&memcg->move_lock);
|
||||||
|
|
||||||
|
error = memcg_init_kmem(memcg, &mem_cgroup_subsys);
|
||||||
|
if (error) {
|
||||||
|
/*
|
||||||
|
* We call put now because our (and parent's) refcnts
|
||||||
|
* are already in place. mem_cgroup_put() will internally
|
||||||
|
* call __mem_cgroup_free, so return directly
|
||||||
|
*/
|
||||||
|
mem_cgroup_put(memcg);
|
||||||
|
return ERR_PTR(error);
|
||||||
|
}
|
||||||
return &memcg->css;
|
return &memcg->css;
|
||||||
free_out:
|
free_out:
|
||||||
__mem_cgroup_free(memcg);
|
__mem_cgroup_free(memcg);
|
||||||
|
@ -5032,13 +5043,6 @@ static void mem_cgroup_destroy(struct cgroup *cont)
|
||||||
mem_cgroup_put(memcg);
|
mem_cgroup_put(memcg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mem_cgroup_populate(struct cgroup_subsys *ss,
|
|
||||||
struct cgroup *cont)
|
|
||||||
{
|
|
||||||
struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
|
|
||||||
return register_kmem_files(memcg, ss);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_MMU
|
#ifdef CONFIG_MMU
|
||||||
/* Handlers for move charge at task migration. */
|
/* Handlers for move charge at task migration. */
|
||||||
#define PRECHARGE_COUNT_AT_ONCE 256
|
#define PRECHARGE_COUNT_AT_ONCE 256
|
||||||
|
@ -5622,7 +5626,6 @@ struct cgroup_subsys mem_cgroup_subsys = {
|
||||||
.create = mem_cgroup_create,
|
.create = mem_cgroup_create,
|
||||||
.pre_destroy = mem_cgroup_pre_destroy,
|
.pre_destroy = mem_cgroup_pre_destroy,
|
||||||
.destroy = mem_cgroup_destroy,
|
.destroy = mem_cgroup_destroy,
|
||||||
.populate = mem_cgroup_populate,
|
|
||||||
.can_attach = mem_cgroup_can_attach,
|
.can_attach = mem_cgroup_can_attach,
|
||||||
.cancel_attach = mem_cgroup_cancel_attach,
|
.cancel_attach = mem_cgroup_cancel_attach,
|
||||||
.attach = mem_cgroup_move_task,
|
.attach = mem_cgroup_move_task,
|
||||||
|
|
Loading…
Reference in a new issue