]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
xfstests: an regression test for btrfs balance
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>
Wed, 9 Oct 2013 02:16:01 +0000 (02:16 +0000)
committerRich Johnston <rjohnston@sgi.com>
Wed, 16 Oct 2013 20:21:35 +0000 (15:21 -0500)
Originally, when executing "btrfs balance" right after
"btrfs subvolume snaphot" & "btrfs subvolume delete",
a kernel BUG arises.

This problem is caused by the patch:
[PATCH 1/2] Btrfs: fix for patch "cleanup: don't check
the same thing twice"
The commit id: 48475471728f060bfd2e686f592ef208d3ba8b7d
(in kernel/git/torvalds/linux.git)

handled by the patch:
[PATCH 2/3] Btrfs: fix oops caused by the space balance
and dead roots

[rjohnston: change test number to 14]

Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Reviewed-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
tests/btrfs/014 [new file with mode: 0755]
tests/btrfs/014.out [new file with mode: 0644]
tests/btrfs/group

diff --git a/tests/btrfs/014 b/tests/btrfs/014
new file mode 100755 (executable)
index 0000000..a49cf06
--- /dev/null
@@ -0,0 +1,71 @@
+#! /bin/bash
+# FS QA Test No. btrfs/014
+#
+# Btrfs balance tests
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2013 Fujitsu.  All Rights Reserved.
+#
+# 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"
+
+here="`pwd`"
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_create_snapshot()
+{
+       for i in $(seq 20)
+       do
+               btrfs sub snapshot $SCRATCH_MNT $SCRATCH_MNT/snapshot0 >/dev/null
+               btrfs sub delete $SCRATCH_MNT/snapshot0 >/dev/null
+       done
+}
+
+_balance()
+{
+       for i in $(seq 20)
+       do
+               btrfs balance start $SCRATCH_MNT >/dev/null
+       done
+}
+
+#get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+
+_setup_testdir
+_require_scratch
+_scratch_mkfs >/dev/null 2>&1
+_scratch_mount
+
+echo "Tip: Run dmesg to see the error on failure"
+
+_create_snapshot &
+
+_balance &
+
+wait
+
+status=0
+exit
diff --git a/tests/btrfs/014.out b/tests/btrfs/014.out
new file mode 100644 (file)
index 0000000..63278ff
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 014
+Tip: Run dmesg to see the error on failure
index fe53a6531c8641c16f90903a7d4153de14dcc055..07df95731e6d789efee0dd76105a7bf72b9d1205 100644 (file)
@@ -16,3 +16,4 @@
 011 auto
 012 auto
 013 auto quick
+014 auto