aboutsummaryrefslogtreecommitdiff
path: root/init.d/sysfs.in
diff options
context:
space:
mode:
authorWilliam Hubbs <w.d.hubbs@gmail.com>2017-11-28 17:14:33 -0600
committerWilliam Hubbs <w.d.hubbs@gmail.com>2017-11-28 17:14:33 -0600
commit3de6395ae3b8780ab501f3cf8688e1cb2a9f0243 (patch)
tree0f92c5cbaa01841dbcf1821b887bef094865c201 /init.d/sysfs.in
parent6bb7ebec483a96e258c64ea3fea18358d7893fee (diff)
split cgroups mounting out of sysfs
This is neceessary to allow cgroups to be mounted in an lxc/lxd container. Fixes https://github.com/openrc/openrc/issues/187
Diffstat (limited to 'init.d/sysfs.in')
-rw-r--r--init.d/sysfs.in112
1 files changed, 0 insertions, 112 deletions
diff --git a/init.d/sysfs.in b/init.d/sysfs.in
index 892528ca..f0d02e5c 100644
--- a/init.d/sysfs.in
+++ b/init.d/sysfs.in
@@ -107,122 +107,11 @@ mount_misc()
fi
}
-cgroup1_base()
-{
- grep -qw cgroup /proc/filesystems || return 0
- if ! mountinfo -q /sys/fs/cgroup; then
- ebegin "Mounting cgroup filesystem"
- local opts="${sysfs_opts},mode=755,size=${rc_cgroupsize:-10m}"
- mount -n -t tmpfs -o "${opts}" cgroup_root /sys/fs/cgroup
- eend $?
- fi
-
- if ! mountinfo -q /sys/fs/cgroup/openrc; then
- local agent="${RC_LIBEXECDIR}/sh/cgroup-release-agent.sh"
- mkdir /sys/fs/cgroup/openrc
- mount -n -t cgroup \
- -o none,${sysfs_opts},name=openrc,release_agent="$agent" \
- openrc /sys/fs/cgroup/openrc
- printf 1 > /sys/fs/cgroup/openrc/notify_on_release
- fi
- return 0
-}
-
-cgroup1_controllers()
-{
- yesno "${rc_controller_cgroups:-YES}" && [ -e /proc/cgroups ] || return 0
- while read -r name _ _ enabled rest; do
- case "${enabled}" in
- 1) mountinfo -q "/sys/fs/cgroup/${name}" && continue
- local x
- for x in $rc_cgroup_controllers; do
- [ "${name}" = "blkio" ] && [ "${x}" = "io" ] &&
- continue 2
- [ "${name}" = "${x}" ] &&
- continue 2
- done
- mkdir "/sys/fs/cgroup/${name}"
- mount -n -t cgroup -o "${sysfs_opts},${name}" \
- "${name}" "/sys/fs/cgroup/${name}"
- ;;
- esac
- done < /proc/cgroups
- return 0
-}
-
-cgroup2_base()
-{
- local base
- base="$(cgroup2_find_path)"
- mkdir -p "${base}"
- mount -t cgroup2 none -o "${sysfs_opts},nsdelegate" "${base}" 2> /dev/null ||
- mount -t cgroup2 none -o "${sysfs_opts}" "${base}"
- return 0
-}
-
-cgroup2_controllers()
-{
- local active cgroup_path x y
- cgroup_path="$(cgroup2_find_path)"
- [ -z "${cgroup_path}" ] && return 0
- [ -e "${cgroup_path}/cgroup.controllers" ] &&
- 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" ]&&
- echo "+${x}" > "${cgroup_path}/cgroup.subtree_control"
- done
- done
- return 0
-}
-
-cgroups_hybrid()
-{
- grep -qw cgroup /proc/filesystems || return 0
- cgroup1_base
- if grep -qw cgroup2 /proc/filesystems; then
- cgroup2_base
- cgroup2_controllers
- fi
- cgroup1_controllers
- return 0
-}
-
-cgroups_legacy()
-{
- grep -qw cgroup /proc/filesystems || return 0
- cgroup1_base
- cgroup1_controllers
- return 0
-}
-
-cgroups_unified()
-{
- cgroup2_base
- cgroup2_controllers
- return 0
-}
-
-mount_cgroups()
-{
- # set up kernel support for cgroups
- if [ -d /sys/fs/cgroup ]; then
- case "${rc_cgroup_mode:-hybrid}" in
- hybrid) cgroups_hybrid ;;
- legacy) cgroups_legacy ;;
- unified) cgroups_unified ;;
- esac
- fi
- return 0
-}
-
restorecon_sys()
{
if [ -x /sbin/restorecon ]; then
ebegin "Restoring SELinux contexts in /sys"
restorecon -F /sys/devices/system/cpu/online >/dev/null 2>&1
- restorecon -rF /sys/fs/cgroup >/dev/null 2>&1
eend $?
fi
}
@@ -231,7 +120,6 @@ start()
{
mount_sys
mount_misc
- mount_cgroups
restorecon_sys
return 0
}