From bc50d0f64a1beea66843ee07b0591658f5d1a986 Mon Sep 17 00:00:00 2001 From: Amir Goldstein Date: Tue, 21 Jun 2022 20:37:28 +0300 Subject: [PATCH] fstests: unfreeze fs on cleanup routines 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 Reviewed-by: Zorro Lang Signed-off-by: Zorro Lang --- tests/generic/068 | 14 ++++++++++---- tests/generic/085 | 3 +++ tests/generic/280 | 13 ++++++++++++- tests/generic/390 | 8 +++++++- tests/generic/459 | 2 ++ tests/generic/491 | 9 +++++++++ tests/xfs/011 | 3 ++- tests/xfs/119 | 9 +++++++++ tests/xfs/297 | 11 +++++++++++ tests/xfs/318 | 3 ++- tests/xfs/325 | 3 ++- tests/xfs/438 | 2 ++ 12 files changed, 71 insertions(+), 9 deletions(-) diff --git a/tests/generic/068 b/tests/generic/068 index 56262cd7a..eeddf6d1d 100755 --- a/tests/generic/068 +++ b/tests/generic/068 @@ -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 diff --git a/tests/generic/085 b/tests/generic/085 index 20cf875a2..786d8e6fa 100755 --- a/tests/generic/085 +++ b/tests/generic/085 @@ -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 diff --git a/tests/generic/280 b/tests/generic/280 index 071445558..8e1ae4d29 100755 --- a/tests/generic/280 +++ b/tests/generic/280 @@ -10,6 +10,17 @@ . ./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. diff --git a/tests/generic/390 b/tests/generic/390 index 20c66e229..e8f6a5dc1 100755 --- a/tests/generic/390 +++ b/tests/generic/390 @@ -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 diff --git a/tests/generic/459 b/tests/generic/459 index 57d58e55c..7be390899 100755 --- a/tests/generic/459 +++ b/tests/generic/459 @@ -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 diff --git a/tests/generic/491 b/tests/generic/491 index e6e57dcd6..797b08d50 100755 --- a/tests/generic/491 +++ b/tests/generic/491 @@ -12,6 +12,15 @@ . ./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 diff --git a/tests/xfs/011 b/tests/xfs/011 index d6e9099e9..ed44d074b 100755 --- a/tests/xfs/011 +++ b/tests/xfs/011 @@ -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.* } diff --git a/tests/xfs/119 b/tests/xfs/119 index b6f96601d..5ffbce25c 100755 --- a/tests/xfs/119 +++ b/tests/xfs/119 @@ -11,6 +11,15 @@ . ./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 diff --git a/tests/xfs/297 b/tests/xfs/297 index ca482e064..07f84c25e 100755 --- a/tests/xfs/297 +++ b/tests/xfs/297 @@ -11,6 +11,17 @@ . ./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 diff --git a/tests/xfs/318 b/tests/xfs/318 index be93f9abe..5798f9a38 100755 --- a/tests/xfs/318 +++ b/tests/xfs/318 @@ -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.* } diff --git a/tests/xfs/325 b/tests/xfs/325 index c6861fbcf..43fb09a6b 100755 --- a/tests/xfs/325 +++ b/tests/xfs/325 @@ -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.* } diff --git a/tests/xfs/438 b/tests/xfs/438 index cfe75bd80..0425c5b1f 100755 --- a/tests/xfs/438 +++ b/tests/xfs/438 @@ -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 / -- 2.50.1