torture: Use "jittering" file to control jitter.sh execution
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 11 Feb 2021 18:39:28 +0000 (10:39 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 8 Mar 2021 22:23:01 +0000 (14:23 -0800)
Currently, jitter.sh execution is controlled by a time limit and by the
"kill" command.  The former allowed jitter.sh to run uselessly past
the end of a set of runs that panicked during boot, and the latter is
vulnerable to PID reuse.  This commit therefore introduces a "jittering"
file in the date-stamp directory within "res" that must be present for
the jitter.sh scripts to continue executing.  The time limit is still
in place in order to avoid disturbing runs featuring large trace dumps,
but the removal of the "jittering" file handles the panic-during-boot
scenario without relying on PIDs.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
tools/testing/selftests/rcutorture/bin/jitter.sh
tools/testing/selftests/rcutorture/bin/kvm.sh

index 188b864bc4bf61fa5a6e74eb5641098c044ddd5f..ed0ea86ddf5d3768b57c6ca88db9569a0fa87687 100755 (executable)
@@ -5,10 +5,11 @@
 # of this script is to inflict random OS jitter on a concurrently running
 # test.
 #
-# Usage: jitter.sh me duration [ sleepmax [ spinmax ] ]
+# Usage: jitter.sh me duration jittering-path [ sleepmax [ spinmax ] ]
 #
 # me: Random-number-generator seed salt.
 # duration: Time to run in seconds.
+# jittering-path: Path to file whose removal will stop this script.
 # sleepmax: Maximum microseconds to sleep, defaults to one second.
 # spinmax: Maximum microseconds to spin, defaults to one millisecond.
 #
@@ -18,8 +19,9 @@
 
 me=$(($1 * 1000))
 duration=$2
-sleepmax=${3-1000000}
-spinmax=${4-1000}
+jittering=$3
+sleepmax=${4-1000000}
+spinmax=${5-1000}
 
 n=1
 
@@ -47,7 +49,7 @@ do
        fi
 
        # Check for stop request.
-       if test -f "$TORTURE_STOPFILE"
+       if ! test -f "$jittering"
        then
                exit 1;
        fi
index 1f5f8720cacc737e0fb7f1c363d160f6e3726422..48da4cdb29d8e6a6bd171a98f93bfbea32491f8e 100755 (executable)
@@ -503,14 +503,17 @@ function dump(first, pastlast, batchnum)
        print "then"
        print "\techo ---- Starting kernels. `date` | tee -a " rd "log";
        print "\techo > " rd "jitter_pids"
+       print "\ttouch " rd "jittering"
        for (j = 0; j < njitter; j++) {
-               print "\tjitter.sh " j " " dur " " ja[2] " " ja[3] "&"
+               print "\tjitter.sh " j " " dur " " rd "jittering " ja[2] " " ja[3] "&"
                print "\techo $! >> " rd "jitter_pids"
        }
        print "\twhile ls $runfiles > /dev/null 2>&1"
        print "\tdo"
        print "\t\t:"
        print "\tdone"
+       print "\trm -f " rd "jittering"
+       print "\twait"
        print "\techo ---- All kernel runs complete. `date` | tee -a " rd "log";
        print "else"
        print "\twait"