Skip to content

Commit

Permalink
cgroup: convert memcg controller to the new cftype interface
Browse files Browse the repository at this point in the history
Convert memcg to use the new cftype based interface.  kmem support
abuses ->populate() for mem_cgroup_sockets_init() so it can't be
removed at the moment.

tcp_memcontrol is updated so that tcp_files[] is registered via a
__initcall.  This change also allows removing the forward declaration
of tcp_files[].  Removed.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Acked-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: Glauber Costa <glommer@parallels.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Greg Thelen <gthelen@google.com>
  • Loading branch information
Tejun Heo committed Apr 1, 2012
1 parent af36f90 commit 6bc1034
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 15 deletions.
12 changes: 3 additions & 9 deletions mm/memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -4764,6 +4764,7 @@ static struct cftype mem_cgroup_files[] = {
.read = mem_cgroup_read,
},
#endif
{ }, /* terminate */
};

static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *memcg, int node)
Expand Down Expand Up @@ -5041,15 +5042,7 @@ static void mem_cgroup_destroy(struct cgroup *cont)
static int mem_cgroup_populate(struct cgroup_subsys *ss,
struct cgroup *cont)
{
int ret;

ret = cgroup_add_files(cont, ss, mem_cgroup_files,
ARRAY_SIZE(mem_cgroup_files));

if (!ret)
ret = register_kmem_files(cont, ss);

return ret;
return register_kmem_files(cont, ss);
}

#ifdef CONFIG_MMU
Expand Down Expand Up @@ -5639,6 +5632,7 @@ struct cgroup_subsys mem_cgroup_subsys = {
.can_attach = mem_cgroup_can_attach,
.cancel_attach = mem_cgroup_cancel_attach,
.attach = mem_cgroup_move_task,
.base_cftypes = mem_cgroup_files,
.early_init = 0,
.use_id = 1,
};
Expand Down
16 changes: 10 additions & 6 deletions net/ipv4/tcp_memcontrol.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
#include <linux/memcontrol.h>
#include <linux/module.h>

static struct cftype tcp_files[4]; /* XXX: will be removed soon */

static inline struct tcp_memcontrol *tcp_from_cgproto(struct cg_proto *cg_proto)
{
return container_of(cg_proto, struct tcp_memcontrol, cg_proto);
Expand Down Expand Up @@ -36,7 +34,7 @@ int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss)

cg_proto = tcp_prot.proto_cgroup(memcg);
if (!cg_proto)
goto create_files;
return 0;

tcp = tcp_from_cgproto(cg_proto);

Expand All @@ -59,9 +57,7 @@ int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss)
cg_proto->sockets_allocated = &tcp->tcp_sockets_allocated;
cg_proto->memcg = memcg;

create_files:
return cgroup_add_files(cgrp, ss, tcp_files,
ARRAY_SIZE(tcp_files));
return 0;
}
EXPORT_SYMBOL(tcp_init_cgroup);

Expand Down Expand Up @@ -266,4 +262,12 @@ static struct cftype tcp_files[] = {
.trigger = tcp_cgroup_reset,
.read_u64 = tcp_cgroup_read,
},
{ } /* terminate */
};

static int __init tcp_memcontrol_init(void)
{
WARN_ON(cgroup_add_cftypes(&mem_cgroup_subsys, tcp_files));
return 0;
}
__initcall(tcp_memcontrol_init);

0 comments on commit 6bc1034

Please sign in to comment.