diff options
author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2009-01-07 21:07:37 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-08 11:31:02 -0500 |
commit | b2aa30f7bb381e04c93eed106089ba55553955f1 (patch) | |
tree | eda632102a0bc6e325a24e77a9c2819eab5aeef3 /include/linux/cgroup.h | |
parent | 2019f634ce5904c19eba4e86f51b1a119a53a9f1 (diff) |
cgroups: don't put struct cgroupfs_root protected by RCU
We don't access struct cgroupfs_root in fast path, so we should not put
struct cgroupfs_root protected by RCU
But the comment in struct cgroup_subsys.root confuse us.
struct cgroup_subsys.root is used in these places:
1 find_css_set(): if (ss->root->subsys_list.next == &ss->sibling)
2 rebind_subsystems(): if (ss->root != &rootnode)
rcu_assign_pointer(ss->root, root);
rcu_assign_pointer(subsys[i]->root, &rootnode);
3 cgroup_has_css_refs(): if (ss->root != cgrp->root)
4 cgroup_init_subsys(): ss->root = &rootnode;
5 proc_cgroupstats_show(): ss->name, ss->root->subsys_bits,
ss->root->number_of_cgroups, !ss->disabled);
6 cgroup_clone(): root = subsys->root;
if ((root != subsys->root) ||
All these place we have held cgroup_lock() or we don't dereference to
struct cgroupfs_root. It's means wo don't need RCU when use struct
cgroup_subsys.root, and we should not put struct cgroupfs_root protected
by RCU.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Reviewed-by: Paul Menage <menage@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Pavel Emelyanov <xemul@openvz.org>
Cc: Balbir Singh <balbir@in.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/cgroup.h')
-rw-r--r-- | include/linux/cgroup.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 08b78c09b09a..f68dfd8dd53a 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -337,7 +337,6 @@ struct cgroup_subsys { | |||
337 | #define MAX_CGROUP_TYPE_NAMELEN 32 | 337 | #define MAX_CGROUP_TYPE_NAMELEN 32 |
338 | const char *name; | 338 | const char *name; |
339 | 339 | ||
340 | /* Protected by RCU */ | ||
341 | struct cgroupfs_root *root; | 340 | struct cgroupfs_root *root; |
342 | 341 | ||
343 | struct list_head sibling; | 342 | struct list_head sibling; |