fstests: unfreeze fs on cleanup routines
authorAmir Goldstein <amir73il@gmail.com>
Tue, 21 Jun 2022 17:37:28 +0000 (20:37 +0300)
committerZorro Lang <zlang@kernel.org>
Fri, 24 Jun 2022 16:27:11 +0000 (00:27 +0800)
Many of tests that freeze fs do not make sure that fs is unfrozen on
test termination.

Some tests also need to kill and wait for writer processes after
unfreezing the fs.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
12 files changed:
tests/generic/068
tests/generic/085
tests/generic/280
tests/generic/390
tests/generic/459
tests/generic/491
tests/xfs/011
tests/xfs/119
tests/xfs/297
tests/xfs/318
tests/xfs/325
tests/xfs/438

index 56262cd7a646168632c83ce0f1e4ccd08b52ee91..eeddf6d1d99c61d41397a23290664f4f438549d9 100755 (executable)
@@ -17,9 +17,12 @@ ITERATIONS=10
 # Override the default cleanup function.
 _cleanup()
 {
-    cd /
-
-    trap 0 1 2 3 15
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
+       [ -n "$pid" ] && kill -9 $pid 2>/dev/null
+       wait $pid
+       cd /
+       rm -f $tmp.*
 }
 
 # Import common functions.
@@ -60,6 +63,7 @@ touch $tmp.running
     rm -r $STRESS_DIR/*
     rmdir $STRESS_DIR
 } &
+pid=$!
 
 # start fstest -m loop in a background block; this gets us mmap coverage
 {
@@ -75,6 +79,7 @@ touch $tmp.running
     rm -rf $FSTEST_DIR/*
     rmdir $FSTEST_DIR
 } &
+pid="$pid $!"
 
 i=0
 let ITERATIONS=$ITERATIONS-1
@@ -103,6 +108,7 @@ done
 rm $tmp.running
 
 # wait for fsstresses to finish
-wait
+wait $pid
+unset pid
 
 exit 1
index 20cf875a27ec621b581dd5a643257ba1bc3b0700..786d8e6fab162d66cd8790ee9158fb99a5dd2ee5 100755 (executable)
@@ -25,6 +25,8 @@ cleanup_dmdev()
 {
        # in case it's still suspended and/or mounted
        $DMSETUP_PROG resume $lvdev >/dev/null 2>&1
+       [ -n "$pid" ] && kill -9 $pid 2>/dev/null
+       wait $pid
        $UMOUNT_PROG $lvdev >/dev/null 2>&1
        _dmsetup_remove $node
 }
@@ -75,6 +77,7 @@ done &
 pid="$pid $!"
 
 wait $pid
+unset pid
 
 status=0
 exit
index 071445558e75d1f0e43c3e58718bc7173e3843b0..8e1ae4d298163b874cf701d899f123a5caeb3565 100755 (executable)
 . ./common/preamble
 _begin_fstest auto quota freeze
 
+# Override the default cleanup function.
+_cleanup()
+{
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
+       [ -n "$pid" ] && kill -9 $pid 2>/dev/null
+       wait $pid
+       cd /
+       rm -f $tmp.*
+}
+
 # Import common functions.
 . ./common/filter
 . ./common/quota
@@ -34,7 +45,7 @@ pid=$!
 sleep 1
 xfs_freeze -u $SCRATCH_MNT
 wait $pid
-_scratch_unmount
+unset pid
 
 # Failure comes in the form of a deadlock.
 
index 20c66e22946bf6140bf8543edc791e0ac271b14e..e8f6a5dc1ceac9a5a90e72f35cfcc04d5974de3a 100755 (executable)
@@ -14,8 +14,12 @@ _begin_fstest auto freeze stress
 _cleanup()
 {
        cd /
-       # Make sure $SCRATCH_MNT is unfreezed
+       # Kill freeze loops and make sure $SCRATCH_MNT is unfreezed
+       [ -n "$freeze_pids" ] && kill -9 $freeze_pids 2>/dev/null
+       wait $freeze_pids
        xfs_freeze -u $SCRATCH_MNT 2>/dev/null
+       [ -n "$fsstress_pid" ] && kill -9 $fsstress_pid 2>/dev/null
+       wait $fsstress_pid
        rm -f $tmp.*
 }
 
@@ -62,7 +66,9 @@ done
 
 wait $fsstress_pid
 result=$?
+unset fsstress_pid
 wait $freeze_pids
+unset freeze_pids
 
 # Exit with fsstress return value
 status=$result
index 57d58e55c10d5d0b860d57665318d32e2bc9e4df..7be3908995dff4feacc99367b6270aad7b9c4f54 100755 (executable)
@@ -24,6 +24,8 @@ _begin_fstest auto freeze thin
 # Override the default cleanup function.
 _cleanup()
 {
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
        cd /
        rm -f $tmp.*
        $UMOUNT_PROG $SCRATCH_MNT >>$seqres.full 2>&1
index e6e57dcd6946d335bced2ff475e50cb7d2a05fd0..797b08d506ea9607c08ef367347bb2bf9d30b75f 100755 (executable)
 . ./common/preamble
 _begin_fstest auto quick freeze mount
 
+# Override the default cleanup function.
+_cleanup()
+{
+       cd /
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
+       rm -f $tmp.*
+}
+
 # Import common functions.
 . ./common/filter
 
index d6e9099e961a79d4a033a472f7ad1ebb3e11554e..ed44d074b55925fcc3a7513813b0b2554e9895c6 100755 (executable)
@@ -16,10 +16,11 @@ _begin_fstest auto freeze log metadata quick
 # Override the default cleanup function.
 _cleanup()
 {
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
        $KILLALL_PROG -9 fsstress 2>/dev/null
        wait
        cd /
-       _scratch_unmount 2>/dev/null
        rm -f $tmp.*
 }
 
index b6f96601de29737e9ea7bfa553e3a34df76c0ee0..5ffbce25c6a5f7ffbde4ccec39289de44d246051 100755 (executable)
 . ./common/preamble
 _begin_fstest log v2log auto freeze
 
+# Override the default cleanup function.
+_cleanup()
+{
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
+       cd /
+       rm -f $tmp.*
+}
+
 # Import common functions.
 . ./common/filter
 
index ca482e064f388899ca25c3d6abb03e9fa7b7e92c..07f84c25e90887ca11cd7ca811a44e4dead8aeb3 100755 (executable)
 . ./common/preamble
 _begin_fstest auto freeze
 
+# Override the default cleanup function.
+_cleanup()
+{
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
+       $KILLALL_PROG -q -9 $FSSTRESS_PROG
+       wait
+       cd /
+       rm -f $tmp.*
+}
+
 # Import common functions.
 . ./common/filter
 
index be93f9abe5fc818ecbedeb63d26c096fb5874161..5798f9a38eac826dc0315cd1f9f788eaf8a216d0 100755 (executable)
@@ -12,8 +12,9 @@ _begin_fstest auto quick rw freeze
 # Override the default cleanup function.
 _cleanup()
 {
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
        cd /
-       _scratch_unmount > /dev/null 2>&1
        rm -rf $tmp.*
 }
 
index c6861fbcf0ed2ceaf25f050b5dff1ebf0297fa82..43fb09a6be4ed970f32e7d988de8cdc2c3874cb3 100755 (executable)
@@ -13,8 +13,9 @@ _begin_fstest auto quick clone freeze
 # Override the default cleanup function.
 _cleanup()
 {
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
        cd /
-       _scratch_unmount > /dev/null 2>&1
        rm -rf $tmp.*
 }
 
index cfe75bd80bf60d30232fd58b4f6f6a8897f43e6c..0425c5b1f640e72cd690bd737300636b4492dc91 100755 (executable)
@@ -26,6 +26,8 @@ _begin_fstest auto quick quota freeze
 # Override the default cleanup function.
 _cleanup()
 {
+       # Make sure $SCRATCH_MNT is unfreezed
+       xfs_freeze -u $SCRATCH_MNT 2>/dev/null
        [ -z "${interval}" ] || \
                sysctl -w fs.xfs.xfssyncd_centisecs=${interval} >/dev/null 2>&1
        cd /