mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
cgroup: replace cgroup_on_dfl() tests in controllers with cgroup_subsys_on_dfl()
cgroup_on_dfl() tests whether the cgroup's root is the default hierarchy; however, an individual controller is only interested in whether the controller is attached to the default hierarchy and never tests a cgroup which doesn't belong to the hierarchy that the controller is attached to. This patch replaces cgroup_on_dfl() tests in controllers with faster static_key based cgroup_subsys_on_dfl(). This leaves cgroup core as the only user of cgroup_on_dfl() and the function is moved from the header file to cgroup.c. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Zefan Li <lizefan@huawei.com> Cc: Vivek Goyal <vgoyal@redhat.com> Cc: Jens Axboe <axboe@kernel.dk> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@kernel.org>
This commit is contained in:
parent
fc5ed1e954
commit
9e10a130d9
6 changed files with 76 additions and 73 deletions
|
@ -237,6 +237,64 @@ static bool cgroup_ssid_enabled(int ssid)
|
|||
return static_key_enabled(cgroup_subsys_enabled_key[ssid]);
|
||||
}
|
||||
|
||||
/**
|
||||
* cgroup_on_dfl - test whether a cgroup is on the default hierarchy
|
||||
* @cgrp: the cgroup of interest
|
||||
*
|
||||
* The default hierarchy is the v2 interface of cgroup and this function
|
||||
* can be used to test whether a cgroup is on the default hierarchy for
|
||||
* cases where a subsystem should behave differnetly depending on the
|
||||
* interface version.
|
||||
*
|
||||
* The set of behaviors which change on the default hierarchy are still
|
||||
* being determined and the mount option is prefixed with __DEVEL__.
|
||||
*
|
||||
* List of changed behaviors:
|
||||
*
|
||||
* - Mount options "noprefix", "xattr", "clone_children", "release_agent"
|
||||
* and "name" are disallowed.
|
||||
*
|
||||
* - When mounting an existing superblock, mount options should match.
|
||||
*
|
||||
* - Remount is disallowed.
|
||||
*
|
||||
* - rename(2) is disallowed.
|
||||
*
|
||||
* - "tasks" is removed. Everything should be at process granularity. Use
|
||||
* "cgroup.procs" instead.
|
||||
*
|
||||
* - "cgroup.procs" is not sorted. pids will be unique unless they got
|
||||
* recycled inbetween reads.
|
||||
*
|
||||
* - "release_agent" and "notify_on_release" are removed. Replacement
|
||||
* notification mechanism will be implemented.
|
||||
*
|
||||
* - "cgroup.clone_children" is removed.
|
||||
*
|
||||
* - "cgroup.subtree_populated" is available. Its value is 0 if the cgroup
|
||||
* and its descendants contain no task; otherwise, 1. The file also
|
||||
* generates kernfs notification which can be monitored through poll and
|
||||
* [di]notify when the value of the file changes.
|
||||
*
|
||||
* - cpuset: tasks will be kept in empty cpusets when hotplug happens and
|
||||
* take masks of ancestors with non-empty cpus/mems, instead of being
|
||||
* moved to an ancestor.
|
||||
*
|
||||
* - cpuset: a task can be moved into an empty cpuset, and again it takes
|
||||
* masks of ancestors.
|
||||
*
|
||||
* - memcg: use_hierarchy is on by default and the cgroup file for the flag
|
||||
* is not created.
|
||||
*
|
||||
* - blkcg: blk-throttle becomes properly hierarchical.
|
||||
*
|
||||
* - debug: disallowed on the default hierarchy.
|
||||
*/
|
||||
static bool cgroup_on_dfl(const struct cgroup *cgrp)
|
||||
{
|
||||
return cgrp->root == &cgrp_dfl_root;
|
||||
}
|
||||
|
||||
/* IDR wrappers which synchronize using cgroup_idr_lock */
|
||||
static int cgroup_idr_alloc(struct idr *idr, void *ptr, int start, int end,
|
||||
gfp_t gfp_mask)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue