cgroup: implement cgroup_subsys->implicit_on_dfl
Some controllers, perf_event for now and possibly freezer in the
future, don't really make sense to control explicitly through
"cgroup.subtree_control". For example, the primary role of perf_event
is identifying the cgroups of tasks; however, because the controller
also keeps a small amount of state per cgroup, it can't be replaced
with simple cgroup membership tests.
This patch implements cgroup_subsys->implicit_on_dfl flag. When set,
the controller is implicitly enabled on all cgroups on the v2
hierarchy so that utility type controllers such as perf_event can be
enabled and function transparently.
An implicit controller doesn't show up in "cgroup.controllers" or
"cgroup.subtree_control", is exempt from no internal process rule and
can be stolen from the default hierarchy even if there are non-root
csses.
v2: Reimplemented on top of the recent updates to css handling and
subsystem rebinding. Rebinding implicit subsystems is now a
simple matter of exempting it from the busy subsystem check.
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -450,6 +450,19 @@ struct cgroup_subsys {
|
||||
|
||||
bool early_init:1;
|
||||
|
||||
/*
|
||||
* If %true, the controller, on the default hierarchy, doesn't show
|
||||
* up in "cgroup.controllers" or "cgroup.subtree_control", is
|
||||
* implicitly enabled on all cgroups on the default hierarchy, and
|
||||
* bypasses the "no internal process" constraint. This is for
|
||||
* utility type controllers which is transparent to userland.
|
||||
*
|
||||
* An implicit controller can be stolen from the default hierarchy
|
||||
* anytime and thus must be okay with offline csses from previous
|
||||
* hierarchies coexisting with csses for the current one.
|
||||
*/
|
||||
bool implicit_on_dfl:1;
|
||||
|
||||
/*
|
||||
* If %false, this subsystem is properly hierarchical -
|
||||
* configuration, resource accounting and restriction on a parent
|
||||
|
||||
Reference in New Issue
Block a user