On 12/28/2025 5:34 PM, Randy Dunlap wrote:
On 12/28/25 2:05 PM, Joel Fernandes wrote:
Add flock-based locking to kvm.sh to prevent multiple instances from running concurrently on the same source tree. This prevents build failures caused by one instance's "make clean" deleting generated files while another instance is building causing build failures.
The lock file is placed in the rcutorture directory and added to .gitignore.
Signed-off-by: Joel Fernandes joelagnelf@nvidia.com
tools/testing/selftests/rcutorture/.gitignore | 1 + tools/testing/selftests/rcutorture/bin/kvm.sh | 17 +++++++++++++++++ 2 files changed, 18 insertions(+)
diff --git a/tools/testing/selftests/rcutorture/.gitignore b/tools/testing/selftests/rcutorture/.gitignore index f6cbce77460b..b8fd42547a6e 100644 --- a/tools/testing/selftests/rcutorture/.gitignore +++ b/tools/testing/selftests/rcutorture/.gitignore @@ -3,3 +3,4 @@ initrd b[0-9]* res *.swp +.kvm.sh.lock diff --git a/tools/testing/selftests/rcutorture/bin/kvm.sh b/tools/testing/selftests/rcutorture/bin/kvm.sh index fff15821c44c..d1fbd092e22a 100755 --- a/tools/testing/selftests/rcutorture/bin/kvm.sh +++ b/tools/testing/selftests/rcutorture/bin/kvm.sh @@ -275,6 +275,23 @@ do shift done +# Prevent concurrent kvm.sh runs on the same source tree. The flock +# is automatically released when the script exits, even if killed. +TORTURE_LOCK="$RCUTORTURE/.kvm.sh.lock" +if test -z "$dryrun" +then
- # Create a file descriptor and flock it, so that when kvm.sh (and its
- # children) exit, the flock is released by the kernel automatically.
- exec 9>"$TORTURE_LOCK"
- if ! flock -n 9
- then
echo "ERROR: Another kvm.sh instance is already running on this tree."echo " Lock file: $TORTURE_LOCK"echo " To run kvm.sh, kill all existing kvm.sh runs first."exit 1- fi
+fi
if test -n "$dryrun" || test -z "$TORTURE_INITRD" || tools/testing/selftests/rcutorture/bin/mkinitrd.sh then :
base-commit: 0ff41df1cb268fc69e703a08a57ee14ae967d0ca prerequisite-patch-id: 912adecf969d167ddd35b26844249c809a2d4664 prerequisite-patch-id: 95ca224b0870cebb545ddaf313691fd18dfd04e1 prerequisite-patch-id: 68a218b9aaada53aa85cf33fcf4afe1592fe160f prerequisite-patch-id: e40912ee9655a8abef17413a1bb9b05d2d4520de prerequisite-patch-id: c0511755626728abcbed2f76e9a0b1d2f15e7c9e prerequisite-patch-id: 0a8814cf3965ce3d5fb30d18db3daf2b96c3db74 prerequisite-patch-id: 450827b1f88e4ab714a63a24a66bd209f8c332af
Are all 54K of these required?
Ouch, this looks like a case of git format-patch scripting gone bad. Anyway, the patches applies cleanly to Linus's master branch. I'll go look into the scripting issue.
Thanks!
- Joel