xfstests: an regression test for btrfs balance

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>
This commit is contained in:
Gui Hecheng
2013-10-09 02:16:01 +00:00
committed by Rich Johnston
parent f1d5892e28
commit 2268142f6f
3 changed files with 74 additions and 0 deletions
+71
View File
@@ -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