Skip to content

Commit

Permalink
cgroups: make root_list contains active hierarchies only
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Li Zefan authored and torvalds committed Jan 8, 2009
1 parent 7534432 commit e5f6a86
Showing 1 changed file with 7 additions and 12 deletions.
19 changes: 7 additions & 12 deletions kernel/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit e5f6a86

Please sign in to comment.