From 50176d8eb0761d6b857bd82a9f2c29ef2fb33a33 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Tue, 20 Apr 2004 18:02:58 +0000 Subject: [PATCH] use setDefaultTTY() added explicit synchronization step for fakeinit with the old methods git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1479 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/scripts/vserver.start | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/util-vserver/scripts/vserver.start b/util-vserver/scripts/vserver.start index 4ae7c46..8f2c3b9 100644 --- a/util-vserver/scripts/vserver.start +++ b/util-vserver/scripts/vserver.start @@ -22,6 +22,7 @@ fi function cleanup() { + test -z "$startsync_pipe" || rm -f "$startsync_pipe" test -z "$is_started" || return 0 if test "$is_configured" -a -z "$is_executed"; then @@ -50,7 +51,7 @@ is recommended to fix this." Failed to start vserver '$VSERVER_NAME'" fi - + test "$OPTION_DEBUG" || exec 2>/dev/null >/dev/null test -z "$is_mounted" || umountVserver "$VSERVER_DIR" || : test -z "$have_interfaces" || disableInterfaces "$VSERVER_DIR" || : @@ -62,6 +63,7 @@ is_started= is_mounted= is_vshelper_init= have_interfaces= +startsync_pipe= set -e trap "cleanup" EXIT @@ -75,11 +77,13 @@ enableInterfaces "$VSERVER_DIR" && have_interfaces=1 mountVserver "$VSERVER_DIR" && is_mounted=1 prepareInit "$VSERVER_DIR" -cd "$VSERVER_DIR"/vdir/ +pushd "$VSERVER_DIR"/vdir/ >/dev/null execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" pre-start +popd >/dev/null -cd "$VSERVER_DIR"/vdir/ +test -z "$OPTION_DEFAULTTTY" || setDefaultTTY +pushd "$VSERVER_DIR"/vdir/ >/dev/null is_configured=1 if $_VSERVER_INFO - FEATURE migrate; then $_CHBIND "${CHBIND_OPTS[@]}" -- \ @@ -95,20 +99,35 @@ if $_VSERVER_INFO - FEATURE migrate; then $_VCONTEXT --migrate-self --endsetup --chroot $SILENT_OPT "${OPTS_VCONTEXT_MIGRATE[@]}" -- \ "${INITCMD_START[@]}" else + if test "$_IS_FAKEINIT"; then + startsync_pipe=$(mktemp /tmp/vserver-start.XXXXXX) + rm -f "$startsync_pipe" + mkfifo -m600 "$startsync_pipe" ## safe, since mkfifo does not follow symlinks + fi + ${NICE_CMD[@]} \ $_CHBIND "${CHBIND_OPTS[@]}" \ $_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \ $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" "${CHCONTEXT_INIT_OPTS[@]}" \ $_SAVE_CTXINFO "$VSERVER_DIR" \ $_CLEARENV \ + $_CHAINECHO "${_IS_FAKEINIT:+$startsync_pipe}" "" \ $_CAPCHROOT "${CAPCHROOT_OPTS[@]}" . \ "${INITCMD_START[@]}" + + ## the additional synchronization step is needed since vshelper.doInit + ## below might be executed before needed context information were + ## saved by $_SAVE_CTXINFO + ${_IS_FAKEINIT:+cat "$startsync_pipe"} >/dev/null fi is_executed=1 "${INITCMD_START_SYNC[@]}" +popd >/dev/null +pushd "$VSERVER_DIR"/vdir/ >/dev/null execScriptlets "$VSERVER_DIR" "$VSERVER_NAME" post-start +popd >/dev/null is_vshelper_init=1 ! vshelper.isEnabled "" "$VSERVER_DIR" || vshelper.doInit "$VSERVER_DIR" -- 1.8.1.5