If we interrupt the test after it spawned the fsstress and balance
processes (while it's sleeping for 30 seconds * $TIME_FACTOR), we don't
kill them and they stay around for a long time, making it impossible to
unmount the scratch filesystem (failing with -EBUSY).
Fix this by adding a _cleanup function that kills the processes and
waits for them to exit.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
. ./common/preamble
_begin_fstest auto qgroup balance
+_cleanup()
+{
+ cd /
+ rm -r -f $tmp.*
+ if [ ! -z "$balance_pid" ]; then
+ _btrfs_kill_stress_balance_pid $balance_pid
+ fi
+ if [ ! -z "$fsstress_pid" ]; then
+ kill $fsstress_pid &> /dev/null
+ wait $fsstress_pid &> /dev/null
+ fi
+}
+
. ./common/filter
_require_scratch
kill $fsstress_pid &> /dev/null
wait $fsstress_pid &> /dev/null
_btrfs_kill_stress_balance_pid $balance_pid
+unset fsstress_pid balance_pid
# The qgroups accounting will be checked by 'btrfs check' (fsck) after the
# fstests framework unmounts the filesystem.