X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver.functions;h=e6482c689940bf8a248925c4492d63d92cbb3bea;hb=497c1688595953b76fcc0e79226e4038753c423f;hp=152e5ced2518738bb612205bb25d0e01a1be8ae7;hpb=bea2fe0cd0b83cad13ec38db3f93f9d4c782f4c6;p=util-vserver.git diff --git a/scripts/vserver.functions b/scripts/vserver.functions index 152e5ce..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=() @@ -692,7 +693,7 @@ function _generateTagOptions function _generateMemctrlOptions { - local vdir="$" + local vdir="$1" local badness getFileValue badness "$vdir/badness" @@ -701,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 { @@ -746,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 ) @@ -1266,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