btrfs/079: fix failure to umount scratch fs due to running filefrag process
[xfstests-dev.git] / tests / btrfs / 079
index 560d5ece0cf8c4173b9d0a316dd526d537261590..1e9411be79ed7c32d92e83c4a046cecd0177d3c3 100755 (executable)
@@ -1,4 +1,7 @@
 #! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2014 Fujitsu All Rights Reserved.
+#
 # FS QA Test No. btrfs/079
 #
 # Do write along with fiemap ioctl.
 # btrfs: Fix and enhance merge_extent_mapping() to insert best fitted extent map
 # btrfs: Fix the wrong condition judgment about subset extent map
 #
-#-----------------------------------------------------------------------
-# Copyright (C) 2014 Fujitsu All Rights Reserved.
-# Author: Qu Wenruo <quwenruo@cn.fujitsu.com>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write the Free Software Foundation,
-# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-#-----------------------------------------------------------------------
-#
-
 seq=`basename $0`
 seqres=$RESULT_DIR/$seq
 echo "QA output created by $seq"
@@ -93,6 +77,12 @@ _filter_error() {
 }
 
 fiemap_work() {
+       # Wait for any running 'filefrag' subcommand before exitting so that
+       # after the test kills the subshell running this function, it does not
+       # fail with EBUSY when unmounting the scratch device because the filefrag
+       # subcommand is still running with an open file on the scratch fs.
+       trap "wait; exit" SIGTERM
+
        filename=$1
        while true; do
                $FILEFRAG_PROG $filename 2> $tmp.output 1> /dev/null