diff options
author | Tejun Heo <tj@kernel.org> | 2014-03-19 10:23:55 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-03-19 10:23:55 -0400 |
commit | a2dd424750807f83632a2a70293961086fd8f870 (patch) | |
tree | 75f55e64a9ad9a4babf4c7effcaf75cf327dd6c8 /include/linux/cgroup.h | |
parent | 4d3bb511b5f9980fc3e9ae5939ebc475b231d3fc (diff) |
cgroup: make cgrp_dfl_root mountable
cgrp_dfl_root will be used as the default unified hierarchy. This
patch makes cgrp_dfl_root mountable by making the following changes.
* cgroup_init_early() now initializes cgrp_dfl_root w/
CGRP_ROOT_SANE_BEHAVIOR. The default hierarchy is always sane.
* parse_cgroupfs_options() and cgroup_mount() are updated such that
cgrp_dfl_root is mounted if sane_behavior is specified w/o any
subsystems.
* rebind_subsystems() now populates the root directory of
cgrp_dfl_root. Note that the function still guarantees success of
rebinding subsystems to cgrp_dfl_root. If populating fails while
rebinding to cgrp_dfl_root, it whines but ignores the error.
* For backward compatibility, the default hierarchy shows up in
/proc/$PID/cgroup only after it's explicitly mounted so that
userland which doesn't make use of it doesn't see any change.
* "current_css_set_cg_links" file of debug cgroup now treats the
default hierarchy the same as other hierarchies. This is visible to
userland. Given that it's for debug controller, this should be
fine.
* While at it, implement cgroup_on_dfl() which tests whether a give
cgroup is on the default hierarchy or not.
The above changes make cgrp_dfl_root mostly equivalent to other
controllers but the actual unified hierarchy behaviors are not
implemented yet. Let's plug child cgroup creation in cgrp_dfl_root
from create_cgroup() for now.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Diffstat (limited to 'include/linux/cgroup.h')
-rw-r--r-- | include/linux/cgroup.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 79993ac066c5..7e9fa505b7bb 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -250,6 +250,9 @@ enum { | |||
250 | * | 250 | * |
251 | * - "cgroup.clone_children" is removed. | 251 | * - "cgroup.clone_children" is removed. |
252 | * | 252 | * |
253 | * - If mount is requested with sane_behavior but without any | ||
254 | * subsystem, the default unified hierarchy is mounted. | ||
255 | * | ||
253 | * - cpuset: tasks will be kept in empty cpusets when hotplug happens | 256 | * - cpuset: tasks will be kept in empty cpusets when hotplug happens |
254 | * and take masks of ancestors with non-empty cpus/mems, instead of | 257 | * and take masks of ancestors with non-empty cpus/mems, instead of |
255 | * being moved to an ancestor. | 258 | * being moved to an ancestor. |
@@ -468,6 +471,13 @@ struct cftype { | |||
468 | #endif | 471 | #endif |
469 | }; | 472 | }; |
470 | 473 | ||
474 | extern struct cgroup_root cgrp_dfl_root; | ||
475 | |||
476 | static inline bool cgroup_on_dfl(const struct cgroup *cgrp) | ||
477 | { | ||
478 | return cgrp->root == &cgrp_dfl_root; | ||
479 | } | ||
480 | |||
471 | /* | 481 | /* |
472 | * See the comment above CGRP_ROOT_SANE_BEHAVIOR for details. This | 482 | * See the comment above CGRP_ROOT_SANE_BEHAVIOR for details. This |
473 | * function can be called as long as @cgrp is accessible. | 483 | * function can be called as long as @cgrp is accessible. |