X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver.functions;h=228c70b43ac3d0f1ffa86eb7f67d881390d42fc1;hb=aef27fccf1233db3093360db9415bab037b29b4e;hp=e41334c0af1d51a01b4a28cbfe9f2355f7a5bc50;hpb=aef33b9810242b2a769ad29facc1678f30c0d235;p=util-vserver.git diff --git a/scripts/vserver.functions b/scripts/vserver.functions index e41334c..228c70b 100644 --- a/scripts/vserver.functions +++ b/scripts/vserver.functions @@ -112,6 +112,12 @@ function _generateChbindOptions test -n "$_HAVE_INTERFACE_OPTIONS" || _generateInterfaceOptions "$vdir" + if test -e "$vdir"/noncontext -o \ + \( -e "$vdir"/spaces/net -a ! -e "$vdir"/ncontext \); then + _HAVE_CHBIND_OPTIONS=1 + return 0 + fi + local f="$vdir"/interfaces/bcast getFileValue bcast "$f" f="$vdir"/interfaces/lback @@ -790,29 +796,21 @@ function _generateSpaceOptions local vdir="$1" local d="$vdir"/spaces local shared - - if test -e "$d"/pid; then - getFileValue shared "$d"/pid - if test -z "$shared"; then - OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid ) - else - OPTS_VSPACE_SHARED=( "${OPTS_VSPACE_SHARED[@]}" --pid ) - VSPACE_SHARED_CMD=( "${VSPACE_SHARED_CMD[@]}" $_VSPACE --enter --xid "$shared" --pid -- ) - fi - fi - - if test -e "$d"/net; then - getFileValue shared "$d"/net - # network context and namespace don't make much sense - _HAVE_CHBIND_OPTIONS=1 - CHBIND_CMD=() - if test -z "$shared"; then - OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net ) - else - OPTS_VSPACE_SHARED=( "${OPTS_VSPACE_SHARED[@]}" --net ) - VSPACE_SHARED_CMD=( "${VSPACE_SHARED_CMD[@]}" $_VSPACE --enter --xid "$shared" --net -- ) + local space + + for space in pid net; do + if test -e "$d"/$space; then + getFileValue shared "$d"/$space || shared="" + if test -z "$shared"; then + OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --$space ) + elif test "$shared" = "0"; then + : # Do nothing + else + OPTS_VSPACE_SHARED=( "${OPTS_VSPACE_SHARED[@]}" --$space ) + VSPACE_SHARED_CMD=( "${VSPACE_SHARED_CMD[@]}" $_VSPACE --enter "$shared" --$space -- ) + fi fi - fi + done local mask getFileValue mask "$d"/mask || \ @@ -1477,8 +1475,12 @@ function useCgroup { hasCgroup || return 1 test -d "$CGROUP_MNT" || return 1 + memcg="" + if $_VSERVER_INFO - FEATURE memcg; then + memcg=1 + fi test -d "$1/cgroup" -o \ - \( -d "$__CONFDIR/.defaults/cgroup" -a \ + \( \( -d "$__CONFDIR/.defaults/cgroup" -o -n "$memcg" \) -a \ ! -e "$1/nocgroup" \) } @@ -1494,9 +1496,8 @@ function _handleCgroup useCgroup "$vdir" || return 0 findDir dir "$vdir/cgroup" "$__CONFDIR/.defaults/cgroup" "" - test -d "$dir" || return 0 - if test -r "$dir"/name; then + if test -n "$dir" -a -r "$dir"/name; then read name < "$dir"/name else name="$VSERVER_NAME" @@ -1511,13 +1512,15 @@ function _handleCgroup cat "$parent/$i" > "$CGROUP_MNT/$name/$i" done - shopt -s nullglob - for i in "$dir"/*; do - f="${i##*/}" - test "$f" != mnt -a "$f" != subsys -a \ - "$f" != inherit -a "$f" != name || continue - cat "$i" > "$CGROUP_MNT/$name/$f" - done + if test -n "$dir"; then + shopt -s nullglob + for i in "$dir"/*; do + f="${i##*/}" + test "$f" != mnt -a "$f" != subsys -a \ + "$f" != inherit -a "$f" != name || continue + cat "$i" > "$CGROUP_MNT/$name/$f" + done + fi fi echo "$$" > "$CGROUP_MNT/$name/tasks" elif test "$action" = "destroy"; then