rcutorture: Add --datestamp parameter to kvm-again.sh
authorPaul E. McKenney <paulmck@kernel.org>
Mon, 29 Aug 2022 23:26:26 +0000 (16:26 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Tue, 18 Oct 2022 22:02:59 +0000 (15:02 -0700)
This commit adds a --datestamp parameter to kvm-again.sh, which, in
contrast to the existing --rundir argument, specifies only the last
segments of the pathname.  This addition enables torture.sh to use
kvm-again.sh in order to avoid redundant kernel builds.

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

index 20941c1051087506221859c51006444d21c3e99d..8a968fbda02c9e5e452281dd59017681f4b97f60 100755 (executable)
@@ -54,7 +54,10 @@ bootargs=
 dryrun=
 dur=
 default_link="cp -R"
-rundir="`pwd`/tools/testing/selftests/rcutorture/res/`date +%Y.%m.%d-%H.%M.%S-again`"
+resdir="`pwd`/tools/testing/selftests/rcutorture/res"
+rundir="$resdir/`date +%Y.%m.%d-%H.%M.%S-again`"
+got_datestamp=
+got_rundir=
 
 startdate="`date`"
 starttime="`get_starttime`"
@@ -62,11 +65,13 @@ starttime="`get_starttime`"
 usage () {
        echo "Usage: $scriptname $oldrun [ arguments ]:"
        echo "       --bootargs kernel-boot-arguments"
+       echo "       --datestamp string"
        echo "       --dryrun"
        echo "       --duration minutes | <seconds>s | <hours>h | <days>d"
        echo "       --link hard|soft|copy"
        echo "       --remote"
        echo "       --rundir /new/res/path"
+       echo "Command line: $scriptname $args"
        exit 1
 }
 
@@ -78,6 +83,23 @@ do
                bootargs="$bootargs $2"
                shift
                ;;
+       --datestamp)
+               checkarg --datestamp "(relative pathname)" "$#" "$2" '^[a-zA-Z0-9._/-]*$' '^--'
+               if test -n "$got_rundir" || test -n "$got_datestamp"
+               then
+                       echo Only one of --datestamp or --rundir may be specified
+                       usage
+               fi
+               got_datestamp=y
+               ds=$2
+               rundir="$resdir/$ds"
+               if test -e "$rundir"
+               then
+                       echo "--datestamp $2: Already exists."
+                       usage
+               fi
+               shift
+               ;;
        --dryrun)
                dryrun=1
                ;;
@@ -119,6 +141,12 @@ do
                ;;
        --rundir)
                checkarg --rundir "(absolute pathname)" "$#" "$2" '^/' '^error'
+               if test -n "$got_rundir" || test -n "$got_datestamp"
+               then
+                       echo Only one of --datestamp or --rundir may be specified
+                       usage
+               fi
+               got_rundir=y
                rundir=$2
                if test -e "$rundir"
                then
@@ -128,8 +156,11 @@ do
                shift
                ;;
        *)
-               echo Unknown argument $1
-               usage
+               if test -n "$1"
+               then
+                       echo Unknown argument $1
+                       usage
+               fi
                ;;
        esac
        shift