X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fchcontext;h=d30f6453b809a9fa12449639eeefcc2479851070;hb=HEAD;hp=2caa42c6eb38bbb62ce4b3bc2c7ea415cd14a94d;hpb=3564d8678a2134185e5e6e83083de027b359ca28;p=util-vserver.git diff --git a/scripts/chcontext b/scripts/chcontext index 2caa42c..d30f645 100755 --- a/scripts/chcontext +++ b/scripts/chcontext @@ -101,7 +101,7 @@ the GNU General Public License. This program has absolutely no warranty." $_VSERVER_INFO - FEATURE migrate || exec $_CHCONTEXT_COMPAT "$@" -tmp=$(getopt -o + --long cap:,ctx:,xid:,disconnect,domainname:,flag:,hostname:,secure,silent,help,version -n "$0" -- "$@") || exit 1 +tmp=$(getopt -o + --long cap:,ctx:,xid:,disconnect,domainname:,flag:,hostname:,secure,silent,help,version,spaces: -n "$0" -- "$@") || exit 1 eval set -- "$tmp" OPT_CAPS=() @@ -111,6 +111,7 @@ OPT_FLAGS=() OPT_SECURE= OPT_SILENT= OPT_INITPID= +OPT_SPACES=--default while true; do case "$1" in @@ -128,13 +129,15 @@ while true; do ;; --secure) OPT_SECURE=1;; --silent) OPT_SILENT=1;; + --spaces) OPT_SPACES=$2; shift;; --) shift; break;; *) echo $"chcontext: internal error; arg=='$1'" >&2; exit 1;; esac shift done -create_cmd=( ${OPT_CTX:+$_VTAG --create --tag "$OPT_CTX" --silentexist --} +create_cmd=( ${OPT_CTX:+$_VTAG --create --tag "$OPT_CTX" --silentexist --silent --} + $_VSPACE --new $OPT_SPACES -- $_VCONTEXT --create --silentexist ${OPT_SILENT:+--silent} ${OPT_CTX:+--xid "$OPT_CTX"} ) @@ -144,6 +147,10 @@ chain_cmd=() old_IFS=$IFS IFS=,$IFS +chain_cmd=( "${chain_cmd[@]}" + -- + $_VSPACE --set $OPT_SPACES ) + test -z "$OPT_DOMAINNAME$OPT_HOSTNAME" || \ chain_cmd=( "${chain_cmd[@]}" -- @@ -158,16 +165,19 @@ chain_cmd=( "${chain_cmd[@]}" ${OPT_CAPS:+--bcap "${OPT_CAPS[*]}"} ${OPT_FLAGS:+--flag "${OPT_FLAGS[*]}"} ) -migrate_cmd=( $_VTAG --migrate --tag "$OPT_CTX" - -- - $_VCONTEXT +migrate_cmd=( $_VCONTEXT ${OPT_SILENT:+--silent} ${OPT_DISCONNECT:+--disconnect} $OPT_INITPID ) IFS=$old_IFS -if test -z "$OPT_CTX" || $_VSERVER_INFO -q "$OPT_CTX" XIDTYPE static; then +$_VSERVER_INFO -q "$OPT_CTX" XIDTYPE static +is_static=$? +test -z "$OPT_CTX" +is_dynamic=$? + +if test "$is_dynamic" -eq 0 || test "$is_static" -eq 0; then "${create_cmd[@]}" "${chain_cmd[@]}" -- \ "${migrate_cmd[@]}" --endsetup --migrate-self -- "$@" rc=$? @@ -175,5 +185,13 @@ else rc=254 fi -test "$rc" -ne 254 || exec "${migrate_cmd[@]}" --xid "$OPT_CTX" --migrate -- "$@" +if test "$is_static" -eq 0; then + migrate_cmd=( $_VTAG --migrate --tag "$OPT_CTX" --silent -- \ + $_VSPACE --enter "$OPT_CTX" $OPT_SPACES -- \ + "${migrate_cmd[@]}" ) +fi + + +test "$rc" -ne 254 || exec "${migrate_cmd[@]}" --xid "$OPT_CTX" --migrate -- \ + "$@" exit $rc