aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorGlauber Costa <glommer@parallels.com>2012-04-09 18:36:34 -0400
committerTejun Heo <tj@kernel.org>2012-04-10 13:04:07 -0400
commitcbe128e348e5994516304f94865ff90c40c1c5ae (patch)
treef982d2110d3adb21a9b11f279e18096906fa98be /mm
parent1d62e43657c63a858560c98069706c705d20505d (diff)
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>
Diffstat (limited to 'mm')
-rw-r--r--mm/memcontrol.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 785c32367075..901bb03f2ae7 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -4640,7 +4640,7 @@ static int mem_control_numa_stat_open(struct inode *unused, struct file *file)
4640#endif /* CONFIG_NUMA */ 4640#endif /* CONFIG_NUMA */
4641 4641
4642#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM 4642#ifdef CONFIG_CGROUP_MEM_RES_CTLR_KMEM
4643static int register_kmem_files(struct mem_cgroup *memcg, struct cgroup_subsys *ss) 4643static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
4644{ 4644{
4645 return mem_cgroup_sockets_init(memcg, ss); 4645 return mem_cgroup_sockets_init(memcg, ss);
4646}; 4646};
@@ -4650,7 +4650,7 @@ static void kmem_cgroup_destroy(struct mem_cgroup *memcg)
4650 mem_cgroup_sockets_destroy(memcg); 4650 mem_cgroup_sockets_destroy(memcg);
4651} 4651}
4652#else 4652#else
4653static int register_kmem_files(struct mem_cgroup *memcg, struct cgroup_subsys *ss) 4653static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
4654{ 4654{
4655 return 0; 4655 return 0;
4656} 4656}
@@ -5010,6 +5010,17 @@ mem_cgroup_create(struct cgroup *cont)
5010 memcg->move_charge_at_immigrate = 0; 5010 memcg->move_charge_at_immigrate = 0;
5011 mutex_init(&memcg->thresholds_lock); 5011 mutex_init(&memcg->thresholds_lock);
5012 spin_lock_init(&memcg->move_lock); 5012 spin_lock_init(&memcg->move_lock);
5013
5014 error = memcg_init_kmem(memcg, &mem_cgroup_subsys);
5015 if (error) {
5016 /*
5017 * We call put now because our (and parent's) refcnts
5018 * are already in place. mem_cgroup_put() will internally
5019 * call __mem_cgroup_free, so return directly
5020 */
5021 mem_cgroup_put(memcg);
5022 return ERR_PTR(error);
5023 }
5013 return &memcg->css; 5024 return &memcg->css;
5014free_out: 5025free_out:
5015 __mem_cgroup_free(memcg); 5026 __mem_cgroup_free(memcg);
@@ -5032,13 +5043,6 @@ static void mem_cgroup_destroy(struct cgroup *cont)
5032 mem_cgroup_put(memcg); 5043 mem_cgroup_put(memcg);
5033} 5044}
5034 5045
5035static int mem_cgroup_populate(struct cgroup_subsys *ss,
5036 struct cgroup *cont)
5037{
5038 struct mem_cgroup *memcg = mem_cgroup_from_cont(cont);
5039 return register_kmem_files(memcg, ss);
5040}
5041
5042#ifdef CONFIG_MMU 5046#ifdef CONFIG_MMU
5043/* Handlers for move charge at task migration. */ 5047/* Handlers for move charge at task migration. */
5044#define PRECHARGE_COUNT_AT_ONCE 256 5048#define PRECHARGE_COUNT_AT_ONCE 256
@@ -5622,7 +5626,6 @@ struct cgroup_subsys mem_cgroup_subsys = {
5622 .create = mem_cgroup_create, 5626 .create = mem_cgroup_create,
5623 .pre_destroy = mem_cgroup_pre_destroy, 5627 .pre_destroy = mem_cgroup_pre_destroy,
5624 .destroy = mem_cgroup_destroy, 5628 .destroy = mem_cgroup_destroy,
5625 .populate = mem_cgroup_populate,
5626 .can_attach = mem_cgroup_can_attach, 5629 .can_attach = mem_cgroup_can_attach,
5627 .cancel_attach = mem_cgroup_cancel_attach, 5630 .cancel_attach = mem_cgroup_cancel_attach,
5628 .attach = mem_cgroup_move_task, 5631 .attach = mem_cgroup_move_task,