From: Enrico Scholz Date: Sat, 29 Oct 2005 16:51:26 +0000 (+0000) Subject: ok... try #3 of the new vwait stuff: it seems to be a good idea to X-Git-Tag: version_0_30_210~61 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c1f04cd4929d365872ca935bb0fd11dd6cb84ed;p=util-vserver.git ok... try #3 of the new vwait stuff: it seems to be a good idea to read files *after* they are filled with content... git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2220 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/scripts/vserver.functions b/util-vserver/scripts/vserver.functions index 6b7bf45..afb1fd7 100644 --- a/util-vserver/scripts/vserver.functions +++ b/util-vserver/scripts/vserver.functions @@ -812,10 +812,14 @@ function initWait $_VWAIT --timeout "$VSHELPER_SYNC_TIMEOUT" \ --status-fd 3 "$2" \ >>$_is_tmpdir/out 2>$_is_tmpdir/err 3>$_is_tmpdir/fifo + rc=$? - $_VPS axf | $_EGREP -e "^[^ \t]+[ \t]+$S_CONTEXT[ \t]+" >&4 + if test "$rc" -ne 0 -a "$rc" -ne 1; then + $_VPS axf | $_EGREP -e "^[^ \t]+[ \t]+$S_CONTEXT[ \t]+" >&4 + killContext "$S_CONTEXT" 9 + fi - killContext "$S_CONTEXT" 9 + exit $rc ) 4>$_is_tmpdir/procs & echo "$!" >$_is_tmpdir/pid @@ -827,10 +831,11 @@ function initWait ## Usage: _waitForVWait function _waitForVWait { + wait "$3" || : + declare -a status - declare -r procs=$4 + declare -r procs=$(cat $4) - wait "$3" || : getFileArray status "$2" set -- ${status[0]} @@ -851,8 +856,9 @@ A timeout occured while waiting for the vserver to finish and it will be killed by sending a SIGKILL signal. The following process list might be useful for finding out the reason of this behavior: -$procs -" +---------------------------------------------------------------------- +${procs:+$procs +}----------------------------------------------------------------------" ;; (\?\?\?|*) warning $"\ @@ -873,7 +879,7 @@ function waitForSync local vwait_pid=$4 if test -d "$vwait_statdir"; then - _waitForVWait "$cfgdir" "$vwait_statdir/fifo" "$( <$vwait_statdir/pid )" "$( < $vwait_statdir/procs )" + _waitForVWait "$cfgdir" "$vwait_statdir/fifo" "$( <$vwait_statdir/pid )" "$vwait_statdir/procs" elif test -n "$_NEED_VSHELPER_SYNC"; then $_VSHELPER_SYNC "$fifo" "$VSHELPER_SYNC_TIMEOUT" || \ warning $"\