Merge branch 'cgroup-rmdir-updates' into cgroup/for-3.8
[~shefty/rdma-dev.git] / include / linux / cgroup.h
index 4cd1d0fd2542c147f67413dbaec3d37e2f7f558a..fe876a77031adf5f8e1235ffb1c19a12cb978832 100644 (file)
@@ -81,8 +81,6 @@ struct cgroup_subsys_state {
 /* bits in struct cgroup_subsys_state flags field */
 enum {
        CSS_ROOT, /* This CSS is the root of the subsystem */
-       CSS_REMOVED, /* This CSS is dead */
-       CSS_CLEAR_CSS_REFS,             /* @ss->__DEPRECATED_clear_css_refs */
 };
 
 /* Caller must verify that the css is not for root cgroup */
@@ -105,11 +103,6 @@ static inline void css_get(struct cgroup_subsys_state *css)
                __css_get(css, 1);
 }
 
-static inline bool css_is_removed(struct cgroup_subsys_state *css)
-{
-       return test_bit(CSS_REMOVED, &css->flags);
-}
-
 /*
  * Call css_tryget() to take a reference on a css if your existing
  * (known-valid) reference isn't already ref-counted. Returns false if
@@ -147,10 +140,6 @@ enum {
        CGRP_RELEASABLE,
        /* Control Group requires release notifications to userspace */
        CGRP_NOTIFY_ON_RELEASE,
-       /*
-        * A thread in rmdir() is wating for this cgroup.
-        */
-       CGRP_WAIT_ON_RMDIR,
        /*
         * Clone cgroup values when creating a new child cgroup
         */
@@ -420,23 +409,6 @@ int cgroup_task_count(const struct cgroup *cgrp);
 /* Return true if cgrp is a descendant of the task's cgroup */
 int cgroup_is_descendant(const struct cgroup *cgrp, struct task_struct *task);
 
-/*
- * When the subsys has to access css and may add permanent refcnt to css,
- * it should take care of racy conditions with rmdir(). Following set of
- * functions, is for stop/restart rmdir if necessary.
- * Because these will call css_get/put, "css" should be alive css.
- *
- *  cgroup_exclude_rmdir();
- *  ...do some jobs which may access arbitrary empty cgroup
- *  cgroup_release_and_wakeup_rmdir();
- *
- *  When someone removes a cgroup while cgroup_exclude_rmdir() holds it,
- *  it sleeps and cgroup_release_and_wakeup_rmdir() will wake him up.
- */
-
-void cgroup_exclude_rmdir(struct cgroup_subsys_state *css);
-void cgroup_release_and_wakeup_rmdir(struct cgroup_subsys_state *css);
-
 /*
  * Control Group taskset, used to pass around set of tasks to cgroup_subsys
  * methods.
@@ -466,7 +438,7 @@ int cgroup_taskset_size(struct cgroup_taskset *tset);
 
 struct cgroup_subsys {
        struct cgroup_subsys_state *(*create)(struct cgroup *cgrp);
-       int (*pre_destroy)(struct cgroup *cgrp);
+       void (*pre_destroy)(struct cgroup *cgrp);
        void (*destroy)(struct cgroup *cgrp);
        int (*can_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
        void (*cancel_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
@@ -487,17 +459,6 @@ struct cgroup_subsys {
         */
        bool use_id;
 
-       /*
-        * If %true, cgroup removal will try to clear css refs by retrying
-        * ss->pre_destroy() until there's no css ref left.  This behavior
-        * is strictly for backward compatibility and will be removed as
-        * soon as the current user (memcg) is updated.
-        *
-        * If %false, ss->pre_destroy() can't fail and cgroup removal won't
-        * wait for css refs to drop to zero before proceeding.
-        */
-       bool __DEPRECATED_clear_css_refs;
-
        /*
         * If %false, this subsystem is properly hierarchical -
         * configuration, resource accounting and restriction on a parent