cgroup: use CSS_ONLINE instead of CGRP_DEAD
authorTejun Heo <tj@kernel.org>
Fri, 16 May 2014 17:22:51 +0000 (13:22 -0400)
committerTejun Heo <tj@kernel.org>
Fri, 16 May 2014 17:22:51 +0000 (13:22 -0400)
Use CSS_ONLINE on the self css to indicate whether a cgroup has been
killed instead of CGRP_DEAD.  This will allow re-using css online test
for cgroup liveliness test.  This doesn't introduce any functional
change.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
include/linux/cgroup.h
kernel/cgroup.c

index f2ff578fc03ab5e085a96da903052e1f03cda328..51a339c99eb6e201316deaf50e02ccdb9efa8cd1 100644 (file)
@@ -143,8 +143,6 @@ static inline void css_put(struct cgroup_subsys_state *css)
 
 /* bits in struct cgroup flags field */
 enum {
-       /* Control Group is dead */
-       CGRP_DEAD,
        /*
         * Control Group has previously had a child cgroup or a task,
         * but no longer (only if CGRP_NOTIFY_ON_RELEASE is set)
index 097a1fc1e1e8971bd3a3b0392a67be2e4a0eac76..004004fd0dedf06a59ae5c36b7e352c959072678 100644 (file)
@@ -278,7 +278,7 @@ static struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgrp,
 /* convenient tests for these bits */
 static inline bool cgroup_is_dead(const struct cgroup *cgrp)
 {
-       return test_bit(CGRP_DEAD, &cgrp->flags);
+       return !(cgrp->self.flags & CSS_ONLINE);
 }
 
 struct cgroup_subsys_state *of_css(struct kernfs_open_file *of)
@@ -1518,6 +1518,7 @@ static void init_cgroup_housekeeping(struct cgroup *cgrp)
        INIT_LIST_HEAD(&cgrp->pidlists);
        mutex_init(&cgrp->pidlist_mutex);
        cgrp->self.cgroup = cgrp;
+       cgrp->self.flags |= CSS_ONLINE;
 
        for_each_subsys(ss, ssid)
                INIT_LIST_HEAD(&cgrp->e_csets[ssid]);
@@ -4541,13 +4542,13 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)
         * Mark @cgrp dead.  This prevents further task migration and child
         * creation by disabling cgroup_lock_live_group().
         */
-       set_bit(CGRP_DEAD, &cgrp->flags);
+       cgrp->self.flags &= ~CSS_ONLINE;
 
        /* initiate massacre of all css's */
        for_each_css(css, ssid, cgrp)
                kill_css(css);
 
-       /* CGRP_DEAD is set, remove from ->release_list for the last time */
+       /* CSS_ONLINE is clear, remove from ->release_list for the last time */
        raw_spin_lock(&release_list_lock);
        if (!list_empty(&cgrp->release_list))
                list_del_init(&cgrp->release_list);