|
@@ -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);
|