btrfs/232: fix umount failure due to fsstress still running
authorFilipe Manana <fdmanana@suse.com>
Thu, 18 Mar 2021 11:48:15 +0000 (11:48 +0000)
committerEryu Guan <guaneryu@gmail.com>
Sun, 21 Mar 2021 13:13:30 +0000 (21:13 +0800)
We start a process that runs fsstress, then kill the process, wait for it
to die and then end the test, where we attempt to unmount the fs which
often fails because the fsstress subcommand started by the process is
still running and using the mount point. This results in a test failure:

  btrfs/232 1s ... umount: /home/fdmanana/btrfs-tests/scratch_1: target is busy.
  _check_btrfs_filesystem: filesystem on /dev/sdc is inconsistent
  (see /home/fdmanana/git/hub/xfstests/results//btrfs/232.full for details)

Fix that by adding a trap to the writer() function.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
tests/btrfs/232

index b0a04a6..b984141 100755 (executable)
@@ -32,6 +32,10 @@ _cleanup()
 
 writer()
 {
+       # Wait for running fsstress subcommand before exitting so that
+       # mountpoint is not busy when we try to unmount it.
+       trap "wait; exit" SIGTERM
+
        while true; do
                args=`_scale_fsstress_args -p 20 -n 1000 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
                $FSSTRESS_PROG $args >/dev/null 2>&1