diff options
author | Glauber Costa <glommer@parallels.com> | 2012-04-09 18:36:33 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2012-04-10 13:04:07 -0400 |
commit | 1d62e43657c63a858560c98069706c705d20505d (patch) | |
tree | 8b55403e0cf1efaab0c0fd7a2e53751dd21f1ebd /net/ipv4 | |
parent | 48ddbe194623ae089cc0576e60363f2d2e85662a (diff) |
cgroup: pass struct mem_cgroup instead of struct cgroup to socket memcg
The only reason cgroup was used, was to be consistent with the populate()
interface. Now that we're getting rid of it, not only we no longer need
it, but we also *can't* call it this way.
Since we will no longer rely on populate(), this will be called from
create(). During create, the association between struct mem_cgroup
and struct cgroup does not yet exist, since cgroup internals hasn't
yet initialized its bookkeeping. This means we would not be able
to draw the memcg pointer from the cgroup pointer in these
functions, which is highly undesirable.
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 'net/ipv4')
-rw-r--r-- | net/ipv4/tcp_memcontrol.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/net/ipv4/tcp_memcontrol.c b/net/ipv4/tcp_memcontrol.c index 8f1753defa5c..151703791bb0 100644 --- a/net/ipv4/tcp_memcontrol.c +++ b/net/ipv4/tcp_memcontrol.c | |||
@@ -18,7 +18,7 @@ static void memcg_tcp_enter_memory_pressure(struct sock *sk) | |||
18 | } | 18 | } |
19 | EXPORT_SYMBOL(memcg_tcp_enter_memory_pressure); | 19 | EXPORT_SYMBOL(memcg_tcp_enter_memory_pressure); |
20 | 20 | ||
21 | int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss) | 21 | int tcp_init_cgroup(struct mem_cgroup *memcg, struct cgroup_subsys *ss) |
22 | { | 22 | { |
23 | /* | 23 | /* |
24 | * The root cgroup does not use res_counters, but rather, | 24 | * The root cgroup does not use res_counters, but rather, |
@@ -28,7 +28,6 @@ int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss) | |||
28 | struct res_counter *res_parent = NULL; | 28 | struct res_counter *res_parent = NULL; |
29 | struct cg_proto *cg_proto, *parent_cg; | 29 | struct cg_proto *cg_proto, *parent_cg; |
30 | struct tcp_memcontrol *tcp; | 30 | struct tcp_memcontrol *tcp; |
31 | struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp); | ||
32 | struct mem_cgroup *parent = parent_mem_cgroup(memcg); | 31 | struct mem_cgroup *parent = parent_mem_cgroup(memcg); |
33 | struct net *net = current->nsproxy->net_ns; | 32 | struct net *net = current->nsproxy->net_ns; |
34 | 33 | ||
@@ -61,9 +60,8 @@ int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss) | |||
61 | } | 60 | } |
62 | EXPORT_SYMBOL(tcp_init_cgroup); | 61 | EXPORT_SYMBOL(tcp_init_cgroup); |
63 | 62 | ||
64 | void tcp_destroy_cgroup(struct cgroup *cgrp) | 63 | void tcp_destroy_cgroup(struct mem_cgroup *memcg) |
65 | { | 64 | { |
66 | struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp); | ||
67 | struct cg_proto *cg_proto; | 65 | struct cg_proto *cg_proto; |
68 | struct tcp_memcontrol *tcp; | 66 | struct tcp_memcontrol *tcp; |
69 | u64 val; | 67 | u64 val; |