X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver.functions;h=e6482c689940bf8a248925c4492d63d92cbb3bea;hb=2f0464efba2a0571561ad0aaa864a42cbd731d4c;hp=e75c76861b7d018064364a562e2c6711c4c68ad3;hpb=93b6ce372f2e185af3cbb19d9c7620486f433496;p=util-vserver.git diff --git a/scripts/vserver.functions b/scripts/vserver.functions index e75c768..e6482c6 100644 --- a/scripts/vserver.functions +++ b/scripts/vserver.functions @@ -46,6 +46,7 @@ declare -a OPTS_ENV=() declare -a OPTS_VTAG_CREATE=() declare -a OPTS_VTAG_ENTER=() declare -a OPTS_VMEMCTRL=() +declare -a OPTS_VSPACE=() declare -a STOPCMD_PREPARE=() @@ -315,9 +316,10 @@ function _generateInitOptions (xgentoo) test -n "$RUNLEVEL_START" || RUNLEVEL_START="default" + RC_PATH=/usr/sbin:/usr/bin:/sbin:/bin INITCMD_START=( env TERM=$TERM /lib/rcscripts/sh/init-vserver.sh "$RUNLEVEL_START" ) - INITCMD_STOP=( env -i TERM=$TERM RUNLEVEL=0 /sbin/rc shutdown ) + INITCMD_STOP=( env -i PATH=$RC_PATH TERM=$TERM RUNLEVEL=0 /sbin/rc shutdown ) INITCMD_PREPARE=( $_FAKE_RUNLEVEL 3 /var/run/utmp ) ;; @@ -691,7 +693,7 @@ function _generateTagOptions function _generateMemctrlOptions { - local vdir="$" + local vdir="$1" local badness getFileValue badness "$vdir/badness" @@ -700,6 +702,26 @@ function _generateMemctrlOptions OPTS_VMEMCTRL=( --badness "$badness" ) } +function _generateSpaceOptions +{ + local vdir="$1" + local d="$vdir"/spaces + + test ! -e "$d"/pid || \ + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid ) + + test ! -e "$d"/net || { + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net ) + # network context and namespace don't make much sense + _HAVE_CHBIND_OPTIONS=1 + CHBIND_CMD=() + } + + local mask + getFileValue mask "$d"/mask || \ + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --mask "$mask" ) +} + ## Usage: prepareInit function prepareInit { @@ -745,6 +767,7 @@ function generateOptions _generatePersonalityOptions "$1" _generateTagOptions "$1" _generateMemctrlOptions "$1" + _generateSpaceOptions "$1" if test -n "$_IS_FAKEINIT"; then CHCONTEXT_INIT_OPTS=( --disconnect --flag fakeinit ) @@ -1254,7 +1277,7 @@ function _namespaceCleanup # these are things that have to be accessible post-cleanup for i in "$root" "$__SBINDIR" "$__PKGLIBDIR" "$vdir" \ "$__PKGSTATEDIR" "$__LOCKDIR" /usr/local /tmp "${skip[@]}"; do - local real=`readlink -f "$i"` + local real=`getPhysicalDir "$i"` test "$i" != "$real" || real= for j in "$i" "$real"; do while test -n "$j"; do @@ -1265,7 +1288,7 @@ function _namespaceCleanup done local -a list_umount - while read dev path opts; do + while read -r dev path opts; do test -n "$path" || continue for i in "$root" /dev /proc; do test "${path#$i}" != "$path" && continue 2