Allow sharing of spaces.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 8 Jul 2010 18:47:58 +0000 (18:47 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Thu, 8 Jul 2010 18:47:58 +0000 (18:47 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2894 94cd875c-1c1d-0410-91d2-eb244daf1a30

scripts/vserver.functions
scripts/vserver.start

index f8c78b6..e41334c 100644 (file)
@@ -49,6 +49,8 @@ declare -a OPTS_VTAG_CREATE=()
 declare -a OPTS_VTAG_ENTER=()
 declare -a OPTS_VMEMCTRL=()
 declare -a OPTS_VSPACE=( --default )
+declare -a OPTS_VSPACE_SHARED=()
+declare -a VSPACE_SHARED_CMD=()
 
 declare -a STOPCMD_PREPARE=()
 
@@ -787,16 +789,30 @@ function _generateSpaceOptions
 {
     local vdir="$1"
     local d="$vdir"/spaces
+    local shared
 
-    ( test ! -e "$d"/pid ) || \
-       OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --pid )
+    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
 
-    test ! -e "$d"/net || {
-       OPTS_VSPACE=( "${OPTS_VSPACE[@]}" --net )
+    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 -- )
+       fi
+    fi
 
     local mask
     getFileValue mask "$d"/mask || \
index 6658acb..7945aca 100644 (file)
@@ -143,6 +143,7 @@ if $_VSERVER_INFO - FEATURE migrate; then
     $_VCONTEXT   --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
     ${OPTION_STRACE:+$_STRACE -fF -o /tmp/vserver-start.$$} \
     ${USE_VNAMESPACE:+$_VNAMESPACE --set -- } \
+    "${VSPACE_SHARED_CMD[@]}" \
     $_VSPACE     --set "${OPTS_VSPACE[@]}" -- \
     $_EXEC_REMOUNT /proc /sys -- \
     $_VLIMIT     --dir "$VSERVER_DIR"/rlimits --missingok -- \