X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=scripts%2Fvserver.stop;h=d78e0debe9dad8c5fdf985313e70d3c12262a834;hb=a741f6faf2baae1e823d334012f6a09e6a1bda51;hp=f1ac335931e5bc6926e23fbe66439523da83a5eb;hpb=3f3cf95f755f3ef1c31ad8e38153deb4ee214c66;p=util-vserver.git diff --git a/scripts/vserver.stop b/scripts/vserver.stop index f1ac335..d78e0de 100644 --- a/scripts/vserver.stop +++ b/scripts/vserver.stop @@ -1,4 +1,4 @@ -# $Id: vserver.stop,v 1.29 2005/06/30 06:17:58 ensc Exp $ --*- sh -*-- +# $Id: vserver.stop 2602 2007-08-27 10:53:04Z dhozac $ --*- sh -*-- # Copyright (C) 2003 Enrico Scholz # @@ -66,25 +66,34 @@ fail= initWait "$VSERVER_DIR" "$S_CONTEXT" vwait_statdir if test -n "$_IS_FAKEINIT" && \ $_VSERVER_INFO - FEATURE vkill; then - $_VKILL -s INT --xid "$S_CONTEXT" -- 1 || fail=1 - ## HACK: remove the 'initpid' stuff above when PID virtualization - ## is implemented + if ! vshelper.isStopSync; then + $_VKILL -s INT --xid "$S_CONTEXT" -- 1 || fail=1 + fi elif $_VSERVER_INFO - FEATURE migrate; then "${NICE_CMD[@]}" \ - ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \ + "${CHBIND_CMD[@]}" \ + "$_VTAG" --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \ $_VCONTEXT $SILENT_OPT --migrate --chroot --xid "$S_CONTEXT" -- \ "${INITCMD_STOP[@]}" || fail=1 else "${NICE_CMD[@]}" \ "$_CHBIND" "${CHBIND_OPTS[@]}" \ "$_EXEC_ULIMIT" "$VSERVER_DIR/ulimits" \ - ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT"} \ $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" \ "$_CAPCHROOT" "${CAPCHROOT_OPTS[@]}" "." \ "${INITCMD_STOP[@]}" || fail=1 fi -test -n "$fail" || waitForSync "$VSERVER_DIR" "$sync_fifo" "$vwait_statdir" +# Remove persistent so those contexts can be stopped +$_VATTRIBUTE --set --xid "$S_CONTEXT" --flag ~persistent 2>/dev/null || : +if $_VSERVER_INFO -q "$S_CONTEXT" XIDTYPE static && + $_VSERVER_INFO - FEATURE vnet; then + $_NATTRIBUTE --set --nid "$S_CONTEXT" --flag ~persistent 2>/dev/null || : +fi + +vshelper.doStopSync + +waitForSync "$VSERVER_DIR" "$sync_fifo" "$vwait_statdir" vshelper.doDestroy "$VSERVER_DIR" "$S_CONTEXT" sendKillSequence "$S_CONTEXT" "${INITKILL_SEQ[@]}" @@ -98,4 +107,7 @@ execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" post-stop umountVserver "$VSERVER_DIR" || : disableInterfaces "$VSERVER_DIR" +saveDiskLimits "$VSERVER_DIR" + execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" postpost-stop +removeCPUSET "$VSERVER_DIR"