gentoo: use /var/run for new /run compatibility
[util-vserver.git] / scripts / vserver.functions
index e00ce74..77ca912 100644 (file)
@@ -42,6 +42,7 @@ declare -a OPTS_VCONTEXT_CREATE=()
 declare -a OPTS_VCONTEXT_MIGRATE=()
 declare -a OPTS_VCONTEXT_ENTER=()
 OPT_VCONTEXT_CHROOT=--chroot
+OPT_VCONTEXT_CLOSE_FD=""
 declare -a OPTS_VATTRIBUTE=( --flag fakeinit )
 declare -a OPTS_VSCHED=()
 declare -a OPTS_ENV=()
@@ -355,7 +356,7 @@ function _generateInitOptions
            ! isNumber "${RUNLEVEL_START:-3}" || INITCMD_PREPARE=( $_FAKE_RUNLEVEL "${RUNLEVEL_START:-3}" /var/run/utmp )
            ;;
 
-       (xgentoo)
+       (xgentoo|xopenrc)
            test -n "$RUNLEVEL_START" || RUNLEVEL_START="default"
            RC_PATH=/usr/sbin:/usr/bin:/sbin:/bin
 
@@ -467,6 +468,8 @@ function _generateChcontextOptions
 
     OPTS_VCONTEXT_CREATE=( $SILENT_OPT \
                           ${ctx:+--xid "$ctx"} )
+    findFile file "$vdir"/keepfds "$__CONFDIR/.defaults/keepfds" ""
+    test -n "$file" || OPT_VCONTEXT_CLOSE_FD="--closefd"
     ## put '--secure' at front so that it can be overridden
     OPTS_VATTRIBUTE=( --secure --flag default "${OPTS_VATTRIBUTE[@]}" )
 }
@@ -1416,11 +1419,19 @@ function _namespaceCleanup
        done
     done
 
+    # keep cgroup mount points
+    list=( "${list[@]}" "${CGROUP_MNT}" )
+    if test -n "$CGROUP_MNT_PER_SS"; then
+        for ss in "${CGROUP_SUBSYS[@]}"; do
+            list=( "${list[@]}" "${CGROUP_MNT}/${ss}" )
+        done
+    fi
+
     local -a list_umount
     while read -r dev path opts; do
        test -n "$path" || continue
-       for i in "$root" /dev /proc; do
-           path_dir="${path}/"
+       path_dir="${path}/"
+       for i in "$root" /dev /proc /sys; do
            test "${path_dir#${i}/}" != "${path_dir}" && continue 2
        done
        for i in "${list[@]}" /; do