cgroup: implement cgroup_subsys->implicit_on_dfl
authorTejun Heo <tj@kernel.org>
Tue, 8 Mar 2016 16:51:26 +0000 (11:51 -0500)
committerTejun Heo <tj@kernel.org>
Tue, 8 Mar 2016 16:51:26 +0000 (11:51 -0500)
commitf6d635ad341d5cc0b9c7ab46adfbf3bf5886cee4
tree0dc1bbf73f89b562748e1e2e57ca2262e9903b5e
parente4857982f49d21c05a84351b56724bf353022355
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>
include/linux/cgroup-defs.h
kernel/cgroup.c