diff options
| author | Li Zefan <lizf@cn.fujitsu.com> | 2009-01-07 18:07:41 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-08 08:31:03 -0800 | 
| commit | e5f6a8609bab0c2d7543ab1505105e011832afd7 (patch) | |
| tree | 07591b1fb27431cee41ea4ca097b514a0e773ba7 /kernel/cgroup.c | |
| parent | 7534432dcc3c654a8671b6b0cdffd1dbdbc73074 (diff) | |
cgroups: make root_list contains active hierarchies only
Don't link rootnode to the root list, so root_list contains active
hierarchies only as the comment indicates.  And rename for_each_root() to
for_each_active_root().
Also remove redundant check in cgroup_kill_sb().
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
Cc: Paul Menage <menage@google.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
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 'kernel/cgroup.c')
| -rw-r--r-- | kernel/cgroup.c | 19 | 
1 files changed, 7 insertions, 12 deletions
| diff --git a/kernel/cgroup.c b/kernel/cgroup.c index f55af3daffc2..fd572d057691 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -84,7 +84,7 @@ struct cgroupfs_root {  	/* Tracks how many cgroups are currently defined in hierarchy.*/  	int number_of_cgroups; -	/* A list running through the mounted hierarchies */ +	/* A list running through the active hierarchies */  	struct list_head root_list;  	/* Hierarchy-specific flags */ @@ -148,8 +148,8 @@ static int notify_on_release(const struct cgroup *cgrp)  #define for_each_subsys(_root, _ss) \  list_for_each_entry(_ss, &_root->subsys_list, sibling) -/* for_each_root() allows you to iterate across the active hierarchies */ -#define for_each_root(_root) \ +/* for_each_active_root() allows you to iterate across the active hierarchies */ +#define for_each_active_root(_root) \  list_for_each_entry(_root, &roots, root_list)  /* the list of cgroups eligible for automatic release. Protected by @@ -1111,10 +1111,9 @@ static void cgroup_kill_sb(struct super_block *sb) {  	}  	write_unlock(&css_set_lock); -	if (!list_empty(&root->root_list)) { -		list_del(&root->root_list); -		root_count--; -	} +	list_del(&root->root_list); +	root_count--; +  	mutex_unlock(&cgroup_mutex);  	kfree(root); @@ -2559,7 +2558,6 @@ int __init cgroup_init_early(void)  	INIT_HLIST_NODE(&init_css_set.hlist);  	css_set_count = 1;  	init_cgroup_root(&rootnode); -	list_add(&rootnode.root_list, &roots);  	root_count = 1;  	init_task.cgroups = &init_css_set; @@ -2666,15 +2664,12 @@ static int proc_cgroup_show(struct seq_file *m, void *v)  	mutex_lock(&cgroup_mutex); -	for_each_root(root) { +	for_each_active_root(root) {  		struct cgroup_subsys *ss;  		struct cgroup *cgrp;  		int subsys_id;  		int count = 0; -		/* Skip this hierarchy if it has no active subsystems */ -		if (!root->actual_subsys_bits) -			continue;  		seq_printf(m, "%lu:", root->subsys_bits);  		for_each_subsys(root, ss)  			seq_printf(m, "%s%s", count++ ? "," : "", ss->name); | 
