btrfs/036: fix sporadic failures when unmounting scratch filesystem
authorFilipe Manana <fdmanana@suse.com>
Tue, 24 Sep 2019 09:49:02 +0000 (10:49 +0100)
committerEryu Guan <guaneryu@gmail.com>
Thu, 26 Sep 2019 05:44:35 +0000 (13:44 +0800)
commitb727d8af324cbd85418ef9c27961db6cd991ddb8
tree5e4c8feabba2c89d60c00a1fac7e3e651e25504b
parent4cec72bb1691e446750d09824d3f478f510c0144
btrfs/036: fix sporadic failures when unmounting scratch filesystem

Often this test can fail on unmount because a 'btrfs subvolume snapshot'
command is still running and using the scratch the mount point:

  btrfs/036 168s ... umount: /home/fdmanana/btrfs-tests/scratch_1: target is busy
          (In some cases useful info about processes that
           use the device is found by lsof(8) or fuser(1).)
  _check_btrfs_filesystem: filesystem on /dev/sdc is inconsistent
  (see /home/fdmanana/git/hub/xfstests/results//btrfs/036.full for details)

This happens because when we kill the process running the do_snapshots()
function we only kill the subshell and don't wait for any processes it
has spawned to finish before the subshell exits. Fix this by setting a
trap in the do_snapshots() function, so that when the subshell receives
a SIGTERM signal it waits for any running 'btrfs subvolume snapshot'
to finish before exitting. We were also not waiting for the subshell
to exit after sending it the SIGTERM signal, so fix that as well by
calling the 'wait' command after calling 'kill' to send that signal.

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/036