diff options
Diffstat (limited to 'init.d')
-rw-r--r-- | init.d/cgroups.in | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/init.d/cgroups.in b/init.d/cgroups.in index 3d5bfa7b..c5399e37 100644 --- a/init.d/cgroups.in +++ b/init.d/cgroups.in @@ -83,14 +83,22 @@ cgroup2_controllers() local active cgroup_path x y cgroup_path="$(cgroup2_find_path)" [ -z "${cgroup_path}" ] && return 0 - [ -e "${cgroup_path}/cgroup.controllers" ] && + [ ! -e "${cgroup_path}/cgroup.controllers" ] && return 0 + [ ! -e "${cgroup_path}/cgroup.subtree_control" ]&& return 0 read -r active < "${cgroup_path}/cgroup.controllers" - for x in ${rc_cgroup_controllers}; do - for y in ${active}; do - [ "$x" = "$y" ] && - [ -e "${cgroup_path}/cgroup.subtree_control" ]&& + for x in ${active}; do + case "$rc_cgroup_mode" in + unified) echo "+${x}" > "${cgroup_path}/cgroup.subtree_control" - done + ;; + hybrid) + for y in ${rc_cgroup_controllers}; do + if [ "$x" = "$y" ]; then + echo "+${x}" > "${cgroup_path}/cgroup.subtree_control" + fi + done + ;; + esac done return 0 } |