]> www.infradead.org Git - users/hch/xfstests-dev.git/commitdiff
generic/251: use sentinel files to kill the fstrim loop
authorDarrick J. Wong <djwong@kernel.org>
Tue, 26 Nov 2024 01:22:52 +0000 (17:22 -0800)
committerZorro Lang <zlang@kernel.org>
Thu, 28 Nov 2024 13:39:49 +0000 (21:39 +0800)
Apparently the subshell kill doesn't always take, and then the test runs
for hours and hours because nothing stops it.  Instead, use a sentinel
file to detect when fstrim_loop should stop execing background fstrims.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
tests/generic/251

index b432fb119379119071b5c35a40ee02abf9f57fa5..d59e91c3e0a33ae65c81a63d3cc2e64e91c0a79d 100755 (executable)
@@ -125,12 +125,15 @@ fstrim_loop()
                        wait $fpid
                fi
                while [ $start -lt $fsize ] ; do
+                       test -s $tmp.fstrim_loop || break
                        $FSTRIM_PROG -m ${minlen}k -o ${start}k -l ${step}k $SCRATCH_MNT &
                        fpid=$!
                        wait $fpid
                        start=$(( $start + $step ))
                done
+               test -s $tmp.fstrim_loop || break
        done
+       rm -f $tmp.fstrim_loop
 }
 
 function check_sums() {
@@ -188,6 +191,7 @@ find -P . -xdev -type f -print0 | xargs -0 md5sum | sort -o $tmp/content.sums
 
 echo -n "Running the test: "
 pids=""
+echo run > $tmp.fstrim_loop
 fstrim_loop &
 fstrim_pid=$!
 p=1
@@ -199,8 +203,10 @@ done
 echo "done."
 
 wait $pids
-kill $fstrim_pid
-wait $fstrim_pid
+truncate -s 0 $tmp.fstrim_loop
+while test -e $tmp.fstrim_loop; do
+       sleep 1
+done
 
 status=0