X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver.functions;h=2e8897eaea8766a0f5e0e04ea26d0a46ffb3e41b;hb=ae8f5839c759113a738c058b90344ab54cfda3cf;hp=71fdbed3b5155e217fa0c95a154698e5a42e866e;hpb=2eaf3d93b482df281eb27d89914df1d7bf223f3a;p=util-vserver.git diff --git a/scripts/vserver.functions b/scripts/vserver.functions index 71fdbed..2e8897e 100644 --- a/scripts/vserver.functions +++ b/scripts/vserver.functions @@ -41,13 +41,14 @@ declare -a ENTER_SHELL=() declare -a OPTS_VCONTEXT_CREATE=() declare -a OPTS_VCONTEXT_MIGRATE=() declare -a OPTS_VCONTEXT_ENTER=() +OPT_VCONTEXT_CHROOT=--chroot declare -a OPTS_VATTRIBUTE=( --flag fakeinit ) declare -a OPTS_VSCHED=() declare -a OPTS_ENV=() declare -a OPTS_VTAG_CREATE=() declare -a OPTS_VTAG_ENTER=() declare -a OPTS_VMEMCTRL=() -declare -a OPTS_VSPACE=() +declare -a OPTS_VSPACE=( --default ) declare -a STOPCMD_PREPARE=() @@ -146,6 +147,8 @@ function _generateIONiceCommand local ionice_class=2 local ionice_priority=0 + test -n "$_IONICE" || return 0 + test -r "$vdir/ionice/class" && read ionice_class <"$vdir"/ionice/class test -r "$vdir/ionice/priority" && read ionice_priority <"$vdir"/ionice/priority @@ -346,6 +349,13 @@ function _generateInitOptions INITCMD_PREPARE=( $_FAKE_RUNLEVEL 3 /var/run/utmp ) ;; + (xarch) + test -n "$RUNLEVEL_START" || RUNLEVEL_START=3 + INITCMD_START=( /etc/rc.multi ) + INITCMD_STOP=( /etc/rc.shutdown ) + INITCMD_PREPARE=( $_FAKE_RUNLEVEL "$RUNLEVEL_START" /var/run/utmp ) + ;; + (x) ;; (*) panic "Unknown init-style '$INITSTYLE'; aborting";; esac @@ -374,10 +384,12 @@ function _generateInitOptions function _generateFlagOptions { local vdir=$1 + local file CHCONTEXT_FLAG_OPTS=() - test ! -e "$vdir"/flags || \ + findFile file "$vdir"/cflags "$vdir"/flags "" + test -z "$file" || \ while read flag; do case x"$flag" in (x|x\#*) ;; @@ -391,11 +403,13 @@ function _generateFlagOptions --flag "$flag" ) ;; esac - done <"$vdir"/flags + done <"$file" isAvoidNamespace "$vdir" || { USE_VNAMESPACE=1 CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}" --flag namespace ) + ! $_VSERVER_INFO - FEATURE PIVOT_ROOT || \ + OPT_VCONTEXT_CHROOT=--pivot-root } } @@ -931,6 +945,8 @@ function mountVserver local ns_opt=$2 local vdir=$1/vdir local mtab_src + local extra_opt= + local real_vdir test -e "$cfgdir"/fstab -o \ -e "$cfgdir"/fstab.local -o \ @@ -951,8 +967,11 @@ function mountVserver isNamespaceCleanup "$cfgdir" && \ _namespaceCleanup "$cfgdir" + real_vdir=$(getPhysicalDir "$vdir") isAvoidNamespace "$cfgdir" || \ - $_SECURE_MOUNT --rbind -n -o dev "$vdir" "/" + $_SECURE_MOUNT --rbind -n -o dev "$vdir" "$real_vdir" + ! $_VSERVER_INFO - FEATURE PIVOT_ROOT || \ + $_SECURE_MOUNT -n -o shared,rec "$real_vdir" "$real_vdir" } function _umountVserverInternal @@ -1454,7 +1473,7 @@ function _handleCgroup if test -r "$dir"/name; then read name < "$dir"/name else - read name < "$vdir"/name + name="$VSERVER_NAME" fi if test "$action" = "attach"; then