aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/cgroup.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2014-03-19 10:23:55 -0400
committerTejun Heo <tj@kernel.org>2014-03-19 10:23:55 -0400
commita2dd424750807f83632a2a70293961086fd8f870 (patch)
tree75f55e64a9ad9a4babf4c7effcaf75cf327dd6c8 /include/linux/cgroup.h
parent4d3bb511b5f9980fc3e9ae5939ebc475b231d3fc (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.h10
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
474extern struct cgroup_root cgrp_dfl_root;
475
476static 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.