Commit 6387ecbc authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

torture: Add a stop-run capability



When bisecting RCU issues, it is often the case that the first error in
an unsuccessful run will happen quickly, but that a successful run must
go on for some time in order to obtain a sufficiently low false-negative
error rate.  In many cases, a bisection requires multiple concurrent
runs, in which case the first failure in any run indicates failure,
pure and simple.  In such cases, it would speed things up greatly if
the first failure terminated all runs.

This commit therefore adds scripting that checks for a file named "STOP"
in the top-level results directory, terminating the run when it appears.
Note that in-progress builds will continue until completion, but future
builds and all runs will be cut short.

Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
parent 3e93a51f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -46,6 +46,12 @@ do
		exit 0;
	fi

	# Check for stop request.
	if test -f "$TORTURE_STOPFILE"
	then
		exit 1;
	fi

	# Set affinity to randomly selected online CPU
	if cpus=`grep 1 /sys/devices/system/cpu/*/online 2>&1 |
		 sed -e 's,/[^/]*$,,' -e 's/^[^0-9]*//'`
+6 −0
Original line number Diff line number Diff line
@@ -9,6 +9,12 @@
#
# Authors: Paul E. McKenney <paulmck@linux.ibm.com>

if test -f "$TORTURE_STOPFILE"
then
	echo "kvm-build.sh early exit due to run STOP request"
	exit 1
fi

config_template=${1}
if test -z "$config_template" -o ! -f "$config_template" -o ! -r "$config_template"
then
+11 −2
Original line number Diff line number Diff line
@@ -182,7 +182,7 @@ do
	kruntime=`gawk 'BEGIN { print systime() - '"$kstarttime"' }' < /dev/null`
	if test -z "$qemu_pid" || kill -0 "$qemu_pid" > /dev/null 2>&1
	then
		if test $kruntime -ge $seconds
		if test $kruntime -ge $seconds -o -f "$TORTURE_STOPFILE"
		then
			break;
		fi
@@ -210,11 +210,20 @@ then
	qemu_pid=`cat "$resdir/qemu_pid"`
fi
if test $commandcompleted -eq 0 -a -n "$qemu_pid"
then
	if ! test -f "$TORTURE_STOPFILE"
	then
		echo Grace period for qemu job at pid $qemu_pid
	fi
	oldline="`tail $resdir/console.log`"
	while :
	do
		if test -f "$TORTURE_STOPFILE"
		then
			echo "PID $qemu_pid killed due to run STOP request" >> $resdir/Warnings 2>&1
			kill -KILL $qemu_pid
			break
		fi
		kruntime=`gawk 'BEGIN { print systime() - '"$kstarttime"' }' < /dev/null`
		if kill -0 $qemu_pid > /dev/null 2>&1
		then
+2 −0
Original line number Diff line number Diff line
@@ -337,6 +337,8 @@ then
	mkdir -p "$resdir" || :
fi
mkdir $resdir/$ds
TORTURE_RESDIR="$resdir/$ds"; export TORTURE_RESDIR
TORTURE_STOPFILE="$resdir/$ds/STOP"; export TORTURE_STOPFILE
echo Results directory: $resdir/$ds
echo $scriptname $args
touch $resdir/$ds/log