Merge branch 'for-4.5-ancestor-test' of git://git.kernel.org/pub/scm/linux/kernel...
[cascardo/linux.git] / include / linux / cgroup-defs.h
index 8cfbc9d..7f334c2 100644 (file)
@@ -224,6 +224,14 @@ struct cgroup {
         */
        int id;
 
+       /*
+        * The depth this cgroup is at.  The root is at depth zero and each
+        * step down the hierarchy increments the level.  This along with
+        * ancestor_ids[] can determine whether a given cgroup is a
+        * descendant of another without traversing the hierarchy.
+        */
+       int level;
+
        /*
         * Each non-empty css_set associated with this cgroup contributes
         * one to populated_cnt.  All children with non-zero popuplated_cnt
@@ -279,6 +287,9 @@ struct cgroup {
 
        /* used to schedule release agent */
        struct work_struct release_agent_work;
+
+       /* ids of the ancestors at each level including self */
+       int ancestor_ids[];
 };
 
 /*
@@ -298,6 +309,9 @@ struct cgroup_root {
        /* The root cgroup.  Root is destroyed on its release. */
        struct cgroup cgrp;
 
+       /* for cgrp->ancestor_ids[0] */
+       int cgrp_ancestor_id_storage;
+
        /* Number of cgroups in the hierarchy, used only for /proc/cgroups */
        atomic_t nr_cgrps;