* [PATCH v5 01/15] btrfs: new test to run btrfs balance and subvolume test simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 02/15] btrfs: new test to run btrfs balance and scrub simultaneously Eryu Guan
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs balance and subvolume create/mount/umount/delete simultaneously,
with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
common/rc | 110 +++++++++++++++++++++++++++++++++++++++++++++++--
tests/btrfs/060 | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/060.out | 2 +
tests/btrfs/group | 1 +
4 files changed, 224 insertions(+), 4 deletions(-)
create mode 100755 tests/btrfs/060
create mode 100644 tests/btrfs/060.out
diff --git a/common/rc b/common/rc
index 34d7c19..fb7892b 100644
--- a/common/rc
+++ b/common/rc
@@ -585,11 +585,17 @@ _scratch_pool_mkfs()
{
case $FSTYP in
btrfs)
- $MKFS_BTRFS_PROG $MKFS_OPTIONS $* $SCRATCH_DEV_POOL > /dev/null
- ;;
+ # if dup profile is in mkfs options call _scratch_mkfs instead
+ # because dup profile only works with single device
+ if [[ "$*" =~ dup ]]; then
+ _scratch_mkfs $*
+ else
+ $MKFS_BTRFS_PROG $MKFS_OPTIONS $* $SCRATCH_DEV_POOL > /dev/null
+ fi
+ ;;
*)
- echo "_scratch_pool_mkfs is not implemented for $FSTYP" 1>&2
- ;;
+ echo "_scratch_pool_mkfs is not implemented for $FSTYP" 1>&2
+ ;;
esac
}
@@ -2486,6 +2492,102 @@ _get_free_inode()
echo $nr_inode
}
+# get btrfs profile configs being tested
+#
+# A set of pre-set profile configs are exported via _btrfs_profile_configs
+# array. Default configs can be overridden by setting BTRFS_PROFILE_CONFIGS
+# var in the format "metadata_profile:data_profile", multiple configs can be
+# seperated by space, e.g.
+# export BTRFS_PROFILE_CONFIGS="raid0:raid0 raid1:raid1 dup:single"
+_btrfs_get_profile_configs()
+{
+ if [ "$FSTYP" != "btrfs" ]; then
+ return
+ fi
+
+ # no user specified btrfs profile configs, export the default configs
+ if [ -z "$BTRFS_PROFILE_CONFIGS" ]; then
+ # default configs
+ _btrfs_profile_configs=(
+ "-m single -d single"
+ "-m dup -d single"
+ "-m raid0 -d raid0"
+ "-m raid1 -d raid0"
+ "-m raid1 -d raid1"
+ "-m raid10 -d raid10"
+ "-m raid5 -d raid5"
+ "-m raid6 -d raid6"
+ )
+
+ # remove dup/raid5/raid6 profiles if we're doing device replace
+ # dup profile indicates only one device being used (SCRATCH_DEV),
+ # but we don't want to replace SCRATCH_DEV, which will be used in
+ # _scratch_mount/_check_scratch_fs etc.
+ # and raid5/raid6 doesn't support replace yet
+ if [ "$1" == "replace" ]; then
+ _btrfs_profile_configs=(
+ "-m single -d single"
+ "-m raid0 -d raid0"
+ "-m raid1 -d raid0"
+ "-m raid1 -d raid1"
+ "-m raid10 -d raid10"
+ # add these back when raid5/6 is working with replace
+ #"-m raid5 -d raid5"
+ #"-m raid6 -d raid6"
+ )
+ fi
+ export _btrfs_profile_configs
+ return
+ fi
+
+ # parse user specified btrfs profile configs
+ local i=0
+ local cfg=""
+ for cfg in $BTRFS_PROFILE_CONFIGS; do
+ # turn "metadata:data" format to "-m metadata -d data"
+ # and assign it to _btrfs_profile_configs array
+ cfg=`echo "$cfg" | sed -e 's/^/-m /' -e 's/:/ -d /'`
+ _btrfs_profile_configs[$i]="$cfg"
+ let i=i+1
+ done
+
+ if [ "$1" == "replace" ]; then
+ if echo ${_btrfs_profile_configs[*]} | grep -q raid[56]; then
+ _notrun "RAID5/6 doesn't support btrfs device replace yet"
+ fi
+ if echo ${_btrfs_profile_configs[*]} | grep -q dup; then
+ _notrun "Do not set dup profile in btrfs device replace test"
+ fi
+ fi
+ export _btrfs_profile_configs
+}
+
+# stress btrfs by running balance operation in a loop
+_btrfs_stress_balance()
+{
+ local btrfs_mnt=$1
+ while true; do
+ $BTRFS_UTIL_PROG balance start $btrfs_mnt
+ done
+}
+
+# stress btrfs by creating/mounting/umounting/deleting subvolume in a loop
+_btrfs_stress_subvolume()
+{
+ local btrfs_dev=$1
+ local btrfs_mnt=$2
+ local subvol_name=$3
+ local subvol_mnt=$4
+
+ mkdir -p $subvol_mnt
+ while true; do
+ $BTRFS_UTIL_PROG subvolume create $btrfs_mnt/$subvol_name
+ $MOUNT_PROG -o subvol=$subvol_name $btrfs_dev $subvol_mnt
+ $UMOUNT_PROG $subvol_mnt
+ $BTRFS_UTIL_PROG subvolume delete $btrfs_mnt/$subvol_name
+ done
+}
+
init_rc()
{
if [ "$iam" == new ]
diff --git a/tests/btrfs/060 b/tests/btrfs/060
new file mode 100755
index 0000000..8ef0e7f
--- /dev/null
+++ b/tests/btrfs/060
@@ -0,0 +1,115 @@
+#! /bin/bash
+# FSQA Test No. btrfs/060
+#
+# Run btrfs balance and subvolume create/mount/umount/delete simultaneously,
+# with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local subvol_mnt=$TEST_DIR/$seq.mnt
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed" | tee -a $seqres.full
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start balance worker: " >>$seqres.full
+ _btrfs_stress_balance $SCRATCH_MNT >/dev/null 2>&1 &
+ balance_pid=$!
+ echo "$balance_pid" >>$seqres.full
+
+ echo -n "Start subvolume worker: " >>$seqres.full
+ _btrfs_stress_subvolume $SCRATCH_DEV $SCRATCH_MNT subvol_$$ $subvol_mnt >/dev/null 2>&1 &
+ subvol_pid=$!
+ echo "$subvol_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+
+ kill $balance_pid $subvol_pid
+ wait
+ # wait for the balance operation to finish
+ while ps aux | grep "balance start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ # in case the subvolume is still mounted
+ $UMOUNT_PROG $subvol_mnt >/dev/null 2>&1
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/060.out b/tests/btrfs/060.out
new file mode 100644
index 0000000..8ffce4d
--- /dev/null
+++ b/tests/btrfs/060.out
@@ -0,0 +1,2 @@
+QA output created by 060
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 68b5c79..bcc4d46 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -62,3 +62,4 @@
057 auto quick
058 auto quick
059 auto quick
+060 auto balance subvol
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 02/15] btrfs: new test to run btrfs balance and scrub simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
2014-10-06 10:04 ` [PATCH v5 01/15] btrfs: new test to run btrfs balance and subvolume test simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 03/15] btrfs: new test to run btrfs balance and defrag operations simultaneously Eryu Guan
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs balance and scrub operations simultaneously with fsstress
running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
common/rc | 9 +++++
tests/btrfs/061 | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/061.out | 2 +
tests/btrfs/group | 1 +
4 files changed, 126 insertions(+)
create mode 100755 tests/btrfs/061
create mode 100644 tests/btrfs/061.out
diff --git a/common/rc b/common/rc
index fb7892b..fac1fad 100644
--- a/common/rc
+++ b/common/rc
@@ -2588,6 +2588,15 @@ _btrfs_stress_subvolume()
done
}
+# stress btrfs by running scrub in a loop
+_btrfs_stress_scrub()
+{
+ local btrfs_mnt=$1
+ while true; do
+ $BTRFS_UTIL_PROG scrub start -B $btrfs_mnt
+ done
+}
+
init_rc()
{
if [ "$iam" == new ]
diff --git a/tests/btrfs/061 b/tests/btrfs/061
new file mode 100755
index 0000000..e0e03d7
--- /dev/null
+++ b/tests/btrfs/061
@@ -0,0 +1,114 @@
+#! /bin/bash
+# FSQA Test No. btrfs/061
+#
+# Run btrfs balance and scrub operations simultaneously with fsstress
+# running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start balance worker: " >>$seqres.full
+ _btrfs_stress_balance $SCRATCH_MNT >/dev/null 2>&1 &
+ balance_pid=$!
+ echo "$balance_pid" >>$seqres.full
+
+ echo -n "Start scrub worker: " >>$seqres.full
+ _btrfs_stress_scrub $SCRATCH_MNT >/dev/null 2>&1 &
+ scrub_pid=$!
+ echo "$scrub_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $balance_pid $scrub_pid
+ wait
+ # wait for the balance and scrub operations to finish
+ while ps aux | grep "balance start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "scrub start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/061.out b/tests/btrfs/061.out
new file mode 100644
index 0000000..273be9e
--- /dev/null
+++ b/tests/btrfs/061.out
@@ -0,0 +1,2 @@
+QA output created by 061
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index bcc4d46..5064ef3 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -63,3 +63,4 @@
058 auto quick
059 auto quick
060 auto balance subvol
+061 auto balance scrub
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 03/15] btrfs: new test to run btrfs balance and defrag operations simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
2014-10-06 10:04 ` [PATCH v5 01/15] btrfs: new test to run btrfs balance and subvolume test simultaneously Eryu Guan
2014-10-06 10:04 ` [PATCH v5 02/15] btrfs: new test to run btrfs balance and scrub simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 04/15] btrfs: new case to run btrfs balance and remount with different compress algorithms Eryu Guan
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs balance and defrag operations simultaneously with fsstress
running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
common/rc | 20 +++++++++
tests/btrfs/062 | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/062.out | 2 +
tests/btrfs/group | 1 +
4 files changed, 139 insertions(+)
create mode 100755 tests/btrfs/062
create mode 100644 tests/btrfs/062.out
diff --git a/common/rc b/common/rc
index fac1fad..9c2aa8e 100644
--- a/common/rc
+++ b/common/rc
@@ -2597,6 +2597,26 @@ _btrfs_stress_scrub()
done
}
+# stress btrfs by defragmenting every file/dir in a loop and compress file
+# contents while defragmenting if second argument is not "nocompress"
+_btrfs_stress_defrag()
+{
+ local btrfs_mnt=$1
+ local compress=$2
+
+ while true; do
+ if [ "$compress" == "nocompress" ]; then
+ find $btrfs_mnt \( -type f -o -type d \) -exec \
+ $BTRFS_UTIL_PROG filesystem defrag {} \;
+ else
+ find $btrfs_mnt \( -type f -o -type d \) -exec \
+ $BTRFS_UTIL_PROG filesystem defrag -clzo {} \;
+ find $btrfs_mnt \( -type f -o -type d \) -exec \
+ $BTRFS_UTIL_PROG filesystem defrag -czlib {} \;
+ fi
+ done
+}
+
init_rc()
{
if [ "$iam" == new ]
diff --git a/tests/btrfs/062 b/tests/btrfs/062
new file mode 100755
index 0000000..74c2a51
--- /dev/null
+++ b/tests/btrfs/062
@@ -0,0 +1,116 @@
+#! /bin/bash
+# FSQA Test No. btrfs/062
+#
+# Run btrfs balance and defrag operations simultaneously with fsstress
+# running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local with_compress=$2
+
+ echo "Test $mkfs_opts with $with_compress" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start balance worker: " >>$seqres.full
+ _btrfs_stress_balance $SCRATCH_MNT >/dev/null 2>&1 &
+ balance_pid=$!
+ echo "$balance_pid" >>$seqres.full
+
+ echo -n "Start defrag worker: " >>$seqres.full
+ _btrfs_stress_defrag $SCRATCH_MNT $with_compress >/dev/null 2>&1 &
+ defrag_pid=$!
+ echo "$defrag_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $balance_pid $defrag_pid
+ wait
+ # wait for the balance and defrag operations to finish
+ while ps aux | grep "balance start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "btrfs filesystem defrag" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t" nocompress
+ run_test "$t" compress
+done
+
+status=0
+exit
diff --git a/tests/btrfs/062.out b/tests/btrfs/062.out
new file mode 100644
index 0000000..a1578f4
--- /dev/null
+++ b/tests/btrfs/062.out
@@ -0,0 +1,2 @@
+QA output created by 062
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 5064ef3..a6c39f7 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -64,3 +64,4 @@
059 auto quick
060 auto balance subvol
061 auto balance scrub
+062 auto balance defrag compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 04/15] btrfs: new case to run btrfs balance and remount with different compress algorithms
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (2 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 03/15] btrfs: new test to run btrfs balance and defrag operations simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 05/15] btrfs: new case to run btrfs balance and device replace operations simultaneously Eryu Guan
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs balance and remount with different compress algorithms
simultaneously, with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
common/rc | 14 +++++++
tests/btrfs/063 | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/063.out | 2 +
tests/btrfs/group | 1 +
4 files changed, 131 insertions(+)
create mode 100755 tests/btrfs/063
create mode 100644 tests/btrfs/063.out
diff --git a/common/rc b/common/rc
index 9c2aa8e..a158ea3 100644
--- a/common/rc
+++ b/common/rc
@@ -2617,6 +2617,20 @@ _btrfs_stress_defrag()
done
}
+# stress btrfs by remounting it with different compression algorithms in a loop
+# run this with fsstress running at background could exercise the compression
+# code path and ensure no race when switching compression algorithm with constant
+# I/O activity.
+_btrfs_stress_remount_compress()
+{
+ local btrfs_mnt=$1
+ while true; do
+ for algo in no zlib lzo; do
+ $MOUNT_PROG -o remount,compress=$algo $btrfs_mnt
+ done
+ done
+}
+
init_rc()
{
if [ "$iam" == new ]
diff --git a/tests/btrfs/063 b/tests/btrfs/063
new file mode 100755
index 0000000..854c941
--- /dev/null
+++ b/tests/btrfs/063
@@ -0,0 +1,114 @@
+#! /bin/bash
+# FSQA Test No. btrfs/063
+#
+# Run btrfs balance and remount with different compress algorithms
+# simultaneously, with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start balance worker: " >>$seqres.full
+ _btrfs_stress_balance $SCRATCH_MNT >/dev/null 2>&1 &
+ balance_pid=$!
+ echo "$balance_pid" >>$seqres.full
+
+ echo -n "Start remount worker: " >>$seqres.full
+ _btrfs_stress_remount_compress $SCRATCH_MNT >/dev/null 2>&1 &
+ remount_pid=$!
+ echo "$remount_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $balance_pid $remount_pid
+ wait
+ # wait for the balance and remount loop to finish
+ while ps aux | grep "balance start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "mount.*$SCRATCH_MNT" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/063.out b/tests/btrfs/063.out
new file mode 100644
index 0000000..de35fc5
--- /dev/null
+++ b/tests/btrfs/063.out
@@ -0,0 +1,2 @@
+QA output created by 063
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index a6c39f7..b7025f6 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -65,3 +65,4 @@
060 auto balance subvol
061 auto balance scrub
062 auto balance defrag compress
+063 auto balance remount compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 05/15] btrfs: new case to run btrfs balance and device replace operations simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (3 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 04/15] btrfs: new case to run btrfs balance and remount with different compress algorithms Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 06/15] btrfs: new case to run btrfs subvolume create/delete operations and device replace simultaneously Eryu Guan
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs balance and replace operations simultaneously with fsstress
running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
common/rc | 73 +++++++++++++++++++++++++++++++
tests/btrfs/064 | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/064.out | 2 +
tests/btrfs/group | 1 +
4 files changed, 198 insertions(+)
create mode 100755 tests/btrfs/064
create mode 100644 tests/btrfs/064.out
diff --git a/common/rc b/common/rc
index a158ea3..531eb1e 100644
--- a/common/rc
+++ b/common/rc
@@ -2160,6 +2160,24 @@ _require_scratch_dev_pool()
done
}
+# ensure devices in SCRATCH_DEV_POOL are of the same size
+# must be called after _require_scratch_dev_pool
+_require_scratch_dev_pool_equal_size()
+{
+ local _size
+ local _newsize
+ local _dev
+
+ # SCRATCH_DEV has been set to the first device in SCRATCH_DEV_POOL
+ _size=`_get_device_size $SCRATCH_DEV`
+ for _dev in $SCRATCH_DEV_POOL; do
+ _newsize=`_get_device_size $_dev`
+ if [ $_size -ne $_newsize ]; then
+ _notrun "This test requires devices in SCRATCH_DEV_POOL have the same size"
+ fi
+ done
+}
+
# We will check if the device is deletable
_require_deletable_scratch_dev_pool()
{
@@ -2631,6 +2649,61 @@ _btrfs_stress_remount_compress()
done
}
+# stress btrfs by replacing devices in a loop
+# Note that at least 3 devices are needed in SCRATCH_DEV_POOL and the last
+# device should be free(not used by btrfs)
+_btrfs_stress_replace()
+{
+ local btrfs_mnt=$1
+
+ # The device number in SCRATCH_DEV_POOL should be at least 3,
+ # one is SCRATCH_DEV, one is to be replaced, one is free device
+ # we won't replace SCRATCH_DEV, see below for reason
+ if [ "`echo $SCRATCH_DEV_POOL | wc -w`" -lt 3 ]; then
+ echo "_btrfs_stress_replace requires at least 3 devices in SCRATCH_DEV_POOL"
+ return
+ fi
+
+ # take the last device as the first free_dev
+ local free_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`"
+
+ # free_dev should be really free
+ if $BTRFS_UTIL_PROG filesystem show $btrfs_mnt | grep -q "$free_dev"; then
+ echo "_btrfs_stress_replace: $free_dev is used by btrfs"
+ return
+ fi
+
+ # dev_pool is device list being currently used by btrfs (excluding SCRATCH_DEV)
+ # and can be replaced. We don't replace SCRATCH_DEV because it will be used in
+ # _scratch_mount and _check_scratch_fs etc.
+ local dev_pool=`echo $SCRATCH_DEV_POOL | sed -e "s# *$SCRATCH_DEV *##" \
+ -e "s# *$free_dev *##"`
+
+ # set the first device in dev_pool as the first src_dev to be replaced
+ local src_dev=`echo $dev_pool | $AWK_PROG '{print $1}'`
+
+ echo "dev_pool=$dev_pool"
+ echo "free_dev=$free_dev, src_dev=$src_dev"
+ while true; do
+ echo "Replacing $src_dev with $free_dev"
+ $BTRFS_UTIL_PROG replace start -fB $src_dev $free_dev $btrfs_mnt
+ if [ $? -ne 0 ]; then
+ # don't update src_dev and free_dev if replace failed
+ continue
+ fi
+ dev_pool="$dev_pool $free_dev"
+ dev_pool=`echo $dev_pool | sed -e "s# *$src_dev *##"`
+ free_dev=$src_dev
+ src_dev=`echo $dev_pool | $AWK_PROG '{print $1}'`
+ done
+}
+
+# return device size in kb
+_get_device_size()
+{
+ grep `_short_dev $1` /proc/partitions | awk '{print $3}'
+}
+
init_rc()
{
if [ "$iam" == new ]
diff --git a/tests/btrfs/064 b/tests/btrfs/064
new file mode 100755
index 0000000..d4b1353
--- /dev/null
+++ b/tests/btrfs/064
@@ -0,0 +1,122 @@
+#! /bin/bash
+# FSQA Test No. btrfs/064
+#
+# Run btrfs balance and replace operations simultaneously with fsstress
+# running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 5
+_require_scratch_dev_pool_equal_size
+_btrfs_get_profile_configs replace
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local saved_scratch_dev_pool=$SCRATCH_DEV_POOL
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ # remove the last device from the SCRATCH_DEV_POOL list so
+ # _scratch_pool_mkfs won't use all devices in pool
+ local last_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`"
+ SCRATCH_DEV_POOL=`echo $SCRATCH_DEV_POOL | sed -e "s# *$last_dev *##"`
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start balance worker: " >>$seqres.full
+ _btrfs_stress_balance $SCRATCH_MNT >/dev/null 2>&1 &
+ balance_pid=$!
+ echo "$balance_pid" >>$seqres.full
+
+ echo -n "Start replace worker: " >>$seqres.full
+ _btrfs_stress_replace $SCRATCH_MNT >>$seqres.full 2>&1 &
+ replace_pid=$!
+ echo "$replace_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $balance_pid $replace_pid
+ wait
+ # wait for the balance and replace operations to finish
+ while ps aux | grep "balance start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "replace start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/064.out b/tests/btrfs/064.out
new file mode 100644
index 0000000..d907654
--- /dev/null
+++ b/tests/btrfs/064.out
@@ -0,0 +1,2 @@
+QA output created by 064
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index b7025f6..9455b4d 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -66,3 +66,4 @@
061 auto balance scrub
062 auto balance defrag compress
063 auto balance remount compress
+064 auto balance replace
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 06/15] btrfs: new case to run btrfs subvolume create/delete operations and device replace simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (4 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 05/15] btrfs: new case to run btrfs balance and device replace operations simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 07/15] btrfs: new case to run btrfs subvolume create/delete operations and scrub simultaneously Eryu Guan
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs subvolume create/mount/umount/delete and device replace
operation simultaneously, with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/065 | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/065.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 126 insertions(+)
create mode 100755 tests/btrfs/065
create mode 100644 tests/btrfs/065.out
diff --git a/tests/btrfs/065 b/tests/btrfs/065
new file mode 100755
index 0000000..7d8249b
--- /dev/null
+++ b/tests/btrfs/065
@@ -0,0 +1,123 @@
+#! /bin/bash
+# FSQA Test No. btrfs/065
+#
+# Run btrfs subvolume create/mount/umount/delete and device replace
+# operation simultaneously, with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 5
+_require_scratch_dev_pool_equal_size
+_btrfs_get_profile_configs replace
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local saved_scratch_dev_pool=$SCRATCH_DEV_POOL
+ local subvol_mnt=$TEST_DIR/$seq.mnt
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ # remove the last device from the SCRATCH_DEV_POOL list so
+ # _scratch_pool_mkfs won't use all devices in pool
+ local last_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`"
+ SCRATCH_DEV_POOL=`echo $SCRATCH_DEV_POOL | sed -e "s# *$last_dev *##"`
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start subvolume worker: " >>$seqres.full
+ _btrfs_stress_subvolume $SCRATCH_DEV $SCRATCH_MNT subvol_$$ $subvol_mnt >/dev/null 2>&1 &
+ subvol_pid=$!
+ echo "$subvol_pid" >>$seqres.full
+
+ echo -n "Start replace worker: " >>$seqres.full
+ _btrfs_stress_replace $SCRATCH_MNT >>$seqres.full 2>&1 &
+ replace_pid=$!
+ echo "$replace_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+
+ kill $subvol_pid $replace_pid
+ wait
+ # wait for the replace operation to finish
+ while ps aux | grep "replace start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ # in case the subvolume is still mounted
+ $UMOUNT_PROG $subvol_mnt >/dev/null 2>&1
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/065.out b/tests/btrfs/065.out
new file mode 100644
index 0000000..94476cd
--- /dev/null
+++ b/tests/btrfs/065.out
@@ -0,0 +1,2 @@
+QA output created by 065
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 9455b4d..697a913 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -67,3 +67,4 @@
062 auto balance defrag compress
063 auto balance remount compress
064 auto balance replace
+065 auto subvol replace
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 07/15] btrfs: new case to run btrfs subvolume create/delete operations and scrub simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (5 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 06/15] btrfs: new case to run btrfs subvolume create/delete operations and device replace simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 08/15] btrfs: new case to run btrfs subvolume create/delete and defrag operations simultaneously Eryu Guan
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs subvolume create/mount/umount/delete and btrfs scrub
operation simultaneously, with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/066 | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/066.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 118 insertions(+)
create mode 100755 tests/btrfs/066
create mode 100644 tests/btrfs/066.out
diff --git a/tests/btrfs/066 b/tests/btrfs/066
new file mode 100755
index 0000000..2d9a1d2
--- /dev/null
+++ b/tests/btrfs/066
@@ -0,0 +1,115 @@
+#! /bin/bash
+# FSQA Test No. btrfs/066
+#
+# Run btrfs subvolume create/mount/umount/delete and btrfs scrub
+# operation simultaneously, with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local subvol_mnt=$TEST_DIR/$seq.mnt
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start subvolume worker: " >>$seqres.full
+ _btrfs_stress_subvolume $SCRATCH_DEV $SCRATCH_MNT subvol_$$ $subvol_mnt >/dev/null 2>&1 &
+ subvol_pid=$!
+ echo "$subvol_pid" >>$seqres.full
+
+ echo -n "Start scrub worker: " >>$seqres.full
+ _btrfs_stress_scrub $SCRATCH_MNT >/dev/null 2>&1 &
+ scrub_pid=$!
+ echo "$scrub_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+
+ kill $subvol_pid $scrub_pid
+ wait
+ # wait for the scrub operation to finish
+ while ps aux | grep "scrub start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ # in case the subvolume is still mounted
+ $UMOUNT_PROG $subvol_mnt >/dev/null 2>&1
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/066.out b/tests/btrfs/066.out
new file mode 100644
index 0000000..b60cc24
--- /dev/null
+++ b/tests/btrfs/066.out
@@ -0,0 +1,2 @@
+QA output created by 066
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 697a913..0770882 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -68,3 +68,4 @@
063 auto balance remount compress
064 auto balance replace
065 auto subvol replace
+066 auto subvol scrub
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 08/15] btrfs: new case to run btrfs subvolume create/delete and defrag operations simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (6 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 07/15] btrfs: new case to run btrfs subvolume create/delete operations and scrub simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 09/15] btrfs: new case to run subvolume create/delete and remount with defferent compress algorithms Eryu Guan
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs subvolume create/mount/umount/delete and btrfs defrag
operations simultaneously, with fsstress running in backgound.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/067 | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/067.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 120 insertions(+)
create mode 100755 tests/btrfs/067
create mode 100644 tests/btrfs/067.out
diff --git a/tests/btrfs/067 b/tests/btrfs/067
new file mode 100755
index 0000000..2c1e284
--- /dev/null
+++ b/tests/btrfs/067
@@ -0,0 +1,117 @@
+#! /bin/bash
+# FSQA Test No. btrfs/067
+#
+# Run btrfs subvolume create/mount/umount/delete and btrfs defrag
+# operation simultaneously, with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local with_compress=$2
+ local subvol_mnt=$TEST_DIR/$seq.mnt
+
+ echo "Test $mkfs_opts with $with_compress" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start subvolume worker: " >>$seqres.full
+ _btrfs_stress_subvolume $SCRATCH_DEV $SCRATCH_MNT subvol_$$ $subvol_mnt >/dev/null 2>&1 &
+ subvol_pid=$!
+ echo "$subvol_pid" >>$seqres.full
+
+ echo -n "Start defrag worker: " >>$seqres.full
+ _btrfs_stress_defrag $SCRATCH_MNT $with_compress >/dev/null 2>&1 &
+ defrag_pid=$!
+ echo "$defrag_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+
+ kill $subvol_pid $defrag_pid
+ wait
+ # wait for btrfs defrag process to exit, otherwise it will block umount
+ while ps aux | grep "btrfs filesystem defrag" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ # in case the subvolume is still mounted
+ $UMOUNT_PROG $subvol_mnt >/dev/null 2>&1
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t" nocompress
+ run_test "$t" compress
+done
+
+status=0
+exit
diff --git a/tests/btrfs/067.out b/tests/btrfs/067.out
new file mode 100644
index 0000000..daa1545
--- /dev/null
+++ b/tests/btrfs/067.out
@@ -0,0 +1,2 @@
+QA output created by 067
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 0770882..2420042 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -69,3 +69,4 @@
064 auto balance replace
065 auto subvol replace
066 auto subvol scrub
+067 auto subvol defrag compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 09/15] btrfs: new case to run subvolume create/delete and remount with defferent compress algorithms
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (7 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 08/15] btrfs: new case to run btrfs subvolume create/delete and defrag operations simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 10/15] btrfs: new case to run device replace and scrub operations simultaneously Eryu Guan
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs subvolume create/mount/umount/delete and remount with
different compress algorithms simultaneously, with fsstress running in
background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/068 | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/068.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 119 insertions(+)
create mode 100755 tests/btrfs/068
create mode 100644 tests/btrfs/068.out
diff --git a/tests/btrfs/068 b/tests/btrfs/068
new file mode 100755
index 0000000..3126ec2
--- /dev/null
+++ b/tests/btrfs/068
@@ -0,0 +1,116 @@
+#! /bin/bash
+# FSQA Test No. btrfs/068
+#
+# Run btrfs subvolume create/mount/umount/delete and remount with
+# different compress algorithms simultaneously, with fsstress running
+# in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local subvol_mnt=$TEST_DIR/$seq.mnt
+
+ echo "Test $mkfs_opts with $with_compress" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start subvolume worker: " >>$seqres.full
+ _btrfs_stress_subvolume $SCRATCH_DEV $SCRATCH_MNT subvol_$$ $subvol_mnt >/dev/null 2>&1 &
+ subvol_pid=$!
+ echo "$subvol_pid" >>$seqres.full
+
+ echo -n "Start remount worker: " >>$seqres.full
+ _btrfs_stress_remount_compress $SCRATCH_MNT >/dev/null 2>&1 &
+ remount_pid=$!
+ echo "$remount_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+
+ kill $subvol_pid $remount_pid
+ wait
+ # wait for the remount loop process to finish
+ while ps aux | grep "mount.*$SCRATCH_MNT" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ # in case the subvolume is still mounted
+ $UMOUNT_PROG $subvol_mnt >/dev/null 2>&1
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/068.out b/tests/btrfs/068.out
new file mode 100644
index 0000000..d10c9bd
--- /dev/null
+++ b/tests/btrfs/068.out
@@ -0,0 +1,2 @@
+QA output created by 068
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 2420042..4999ca7 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -70,3 +70,4 @@
065 auto subvol replace
066 auto subvol scrub
067 auto subvol defrag compress
+068 auto subvol remount compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 10/15] btrfs: new case to run device replace and scrub operations simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (8 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 09/15] btrfs: new case to run subvolume create/delete and remount with defferent compress algorithms Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 11/15] btrfs: new case to run device replace and defrag " Eryu Guan
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs replace operations and scrub simultaneously with fsstress
running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/069 | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/069.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 126 insertions(+)
create mode 100755 tests/btrfs/069
create mode 100644 tests/btrfs/069.out
diff --git a/tests/btrfs/069 b/tests/btrfs/069
new file mode 100755
index 0000000..d939cd8
--- /dev/null
+++ b/tests/btrfs/069
@@ -0,0 +1,123 @@
+#! /bin/bash
+# FSQA Test No. btrfs/069
+#
+# Run btrfs replace operations and scrub simultaneously with fsstress
+# running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 5
+_require_scratch_dev_pool_equal_size
+_btrfs_get_profile_configs replace
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local saved_scratch_dev_pool=$SCRATCH_DEV_POOL
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ # remove the last device from the SCRATCH_DEV_POOL list so
+ # _scratch_pool_mkfs won't use all devices in pool
+ local last_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`"
+ SCRATCH_DEV_POOL=`echo $SCRATCH_DEV_POOL | sed -e "s# *$last_dev *##"`
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start replace worker: " >>$seqres.full
+ _btrfs_stress_replace $SCRATCH_MNT >>$seqres.full 2>&1 &
+ replace_pid=$!
+ echo "$replace_pid" >>$seqres.full
+
+ echo -n "Start scrub worker: " >>$seqres.full
+ _btrfs_stress_scrub $SCRATCH_MNT >/dev/null 2>&1 &
+ scrub_pid=$!
+ echo "$scrub_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $replace_pid $scrub_pid
+ wait
+
+ # wait for the scrub and replace operations to finish
+ while ps aux | grep "scrub start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "replace start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/069.out b/tests/btrfs/069.out
new file mode 100644
index 0000000..532a929
--- /dev/null
+++ b/tests/btrfs/069.out
@@ -0,0 +1,2 @@
+QA output created by 069
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 4999ca7..31cb02b 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -71,3 +71,4 @@
066 auto subvol scrub
067 auto subvol defrag compress
068 auto subvol remount compress
+069 auto replace scrub
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 11/15] btrfs: new case to run device replace and defrag operations simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (9 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 10/15] btrfs: new case to run device replace and scrub operations simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 12/15] btrfs: new case to run device replace and remount with different compress algorithms simultaneously Eryu Guan
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs replace operations and defrag simultaneously with fsstress
running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/070 | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/070.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 128 insertions(+)
create mode 100755 tests/btrfs/070
create mode 100644 tests/btrfs/070.out
diff --git a/tests/btrfs/070 b/tests/btrfs/070
new file mode 100755
index 0000000..6ef86c9
--- /dev/null
+++ b/tests/btrfs/070
@@ -0,0 +1,125 @@
+#! /bin/bash
+# FSQA Test No. btrfs/070
+#
+# Run btrfs replace operations and defrag simultaneously with fsstress
+# running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 5
+_require_scratch_dev_pool_equal_size
+_btrfs_get_profile_configs replace
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local with_compress=$2
+ local saved_scratch_dev_pool=$SCRATCH_DEV_POOL
+
+ echo "Test $mkfs_opts with $with_compress" >>$seqres.full
+
+ # remove the last device from the SCRATCH_DEV_POOL list so
+ # _scratch_pool_mkfs won't use all devices in pool
+ local last_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`"
+ SCRATCH_DEV_POOL=`echo $SCRATCH_DEV_POOL | sed -e "s# *$last_dev *##"`
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start replace worker: " >>$seqres.full
+ _btrfs_stress_replace $SCRATCH_MNT >>$seqres.full 2>&1 &
+ replace_pid=$!
+ echo "$replace_pid" >>$seqres.full
+
+ echo -n "Start defrag worker: " >>$seqres.full
+ _btrfs_stress_defrag $SCRATCH_MNT $with_compress >/dev/null 2>&1 &
+ defrag_pid=$!
+ echo "$defrag_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $replace_pid $defrag_pid
+ wait
+
+ # wait for the defrag and replace operations to finish
+ while ps aux | grep "btrfs filesystem defrag" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "replace start" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t" nocompress
+ run_test "$t" compress
+done
+
+status=0
+exit
diff --git a/tests/btrfs/070.out b/tests/btrfs/070.out
new file mode 100644
index 0000000..8940c5d
--- /dev/null
+++ b/tests/btrfs/070.out
@@ -0,0 +1,2 @@
+QA output created by 070
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 31cb02b..869c061 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -72,3 +72,4 @@
067 auto subvol defrag compress
068 auto subvol remount compress
069 auto replace scrub
+070 auto replace defrag compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 12/15] btrfs: new case to run device replace and remount with different compress algorithms simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (10 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 11/15] btrfs: new case to run device replace and defrag " Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 13/15] btrfs: new case to run btrfs scrub and defrag operations simultaneously Eryu Guan
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs replace operations and remount with different compress
algorithms simultaneously with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/071 | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/071.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 126 insertions(+)
create mode 100755 tests/btrfs/071
create mode 100644 tests/btrfs/071.out
diff --git a/tests/btrfs/071 b/tests/btrfs/071
new file mode 100755
index 0000000..be3afe0
--- /dev/null
+++ b/tests/btrfs/071
@@ -0,0 +1,123 @@
+#! /bin/bash
+# FSQA Test No. btrfs/071
+#
+# Run btrfs replace operations and remount with different compress
+# algorithms simultaneously with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 5
+_require_scratch_dev_pool_equal_size
+_btrfs_get_profile_configs replace
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local saved_scratch_dev_pool=$SCRATCH_DEV_POOL
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ # remove the last device from the SCRATCH_DEV_POOL list so
+ # _scratch_pool_mkfs won't use all devices in pool
+ local last_dev="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $NF}'`"
+ SCRATCH_DEV_POOL=`echo $SCRATCH_DEV_POOL | sed -e "s# *$last_dev *##"`
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+ SCRATCH_DEV_POOL=$saved_scratch_dev_pool
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start replace worker: " >>$seqres.full
+ _btrfs_stress_replace $SCRATCH_MNT >>$seqres.full 2>&1 &
+ replace_pid=$!
+ echo "$replace_pid" >>$seqres.full
+
+ echo -n "Start remount worker: " >>$seqres.full
+ _btrfs_stress_remount_compress $SCRATCH_MNT >/dev/null 2>&1 &
+ remount_pid=$!
+ echo "$remount_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $replace_pid $remount_pid
+ wait
+
+ # wait for the remount and replace operations to finish
+ while ps aux | grep "replace start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "mount.*$SCRATCH_MNT" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/071.out b/tests/btrfs/071.out
new file mode 100644
index 0000000..9a9ef40
--- /dev/null
+++ b/tests/btrfs/071.out
@@ -0,0 +1,2 @@
+QA output created by 071
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 869c061..13bbeb3 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -73,3 +73,4 @@
068 auto subvol remount compress
069 auto replace scrub
070 auto replace defrag compress
+071 auto replace remount compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 13/15] btrfs: new case to run btrfs scrub and defrag operations simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (11 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 12/15] btrfs: new case to run device replace and remount with different compress algorithms simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 14/15] btrfs: new case to run btrfs scrub and remount with different compress algorithms simultaneously Eryu Guan
2014-10-06 10:04 ` [PATCH v5 15/15] btrfs: new case to run defrag " Eryu Guan
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs scrub and defrag operations simultaneously with fsstress
running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/072 | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/072.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 119 insertions(+)
create mode 100755 tests/btrfs/072
create mode 100644 tests/btrfs/072.out
diff --git a/tests/btrfs/072 b/tests/btrfs/072
new file mode 100755
index 0000000..07cc766
--- /dev/null
+++ b/tests/btrfs/072
@@ -0,0 +1,116 @@
+#! /bin/bash
+# FSQA Test No. btrfs/072
+#
+# Run btrfs scrub and defrag operations simultaneously with fsstress
+# running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local with_compress=$2
+
+ echo "Test $mkfs_opts with $with_compress" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start scrub worker: " >>$seqres.full
+ _btrfs_stress_scrub $SCRATCH_MNT >/dev/null 2>&1 &
+ scrub_pid=$!
+ echo "$scrub_pid" >>$seqres.full
+
+ echo -n "Start defrag worker: " >>$seqres.full
+ _btrfs_stress_defrag $SCRATCH_MNT $with_compress >/dev/null 2>&1 &
+ defrag_pid=$!
+ echo "$defrag_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $scrub_pid $defrag_pid
+ wait
+ # wait for the scrub and defrag operations to finish
+ while ps aux | grep "scrub start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "btrfs filesystem defrag" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t" nocompress
+ run_test "$t" compress
+done
+
+status=0
+exit
diff --git a/tests/btrfs/072.out b/tests/btrfs/072.out
new file mode 100644
index 0000000..590bbc6
--- /dev/null
+++ b/tests/btrfs/072.out
@@ -0,0 +1,2 @@
+QA output created by 072
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 13bbeb3..7bded39 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -74,3 +74,4 @@
069 auto replace scrub
070 auto replace defrag compress
071 auto replace remount compress
+072 auto scrub defrag compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 14/15] btrfs: new case to run btrfs scrub and remount with different compress algorithms simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (12 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 13/15] btrfs: new case to run btrfs scrub and defrag operations simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
2014-10-06 10:04 ` [PATCH v5 15/15] btrfs: new case to run defrag " Eryu Guan
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs scrub and remount with different compress algorithms
simultaneously with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/073 | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/073.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 117 insertions(+)
create mode 100755 tests/btrfs/073
create mode 100644 tests/btrfs/073.out
diff --git a/tests/btrfs/073 b/tests/btrfs/073
new file mode 100755
index 0000000..bdd6308
--- /dev/null
+++ b/tests/btrfs/073
@@ -0,0 +1,114 @@
+#! /bin/bash
+# FSQA Test No. btrfs/073
+#
+# Run btrfs scrub and remount with different compress algorithms
+# simultaneously with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+
+ echo "Test $mkfs_opts" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start scrub worker: " >>$seqres.full
+ _btrfs_stress_scrub $SCRATCH_MNT >/dev/null 2>&1 &
+ scrub_pid=$!
+ echo "$scrub_pid" >>$seqres.full
+
+ echo -n "Start remount worker: " >>$seqres.full
+ _btrfs_stress_remount_compress $SCRATCH_MNT >/dev/null 2>&1 &
+ remount_pid=$!
+ echo "$remount_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $scrub_pid $remount_pid
+ wait
+ # wait for the scrub and remount operations to finish
+ while ps aux | grep "scrub start" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "mount.*$SCRATCH_MNT" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t"
+done
+
+status=0
+exit
diff --git a/tests/btrfs/073.out b/tests/btrfs/073.out
new file mode 100644
index 0000000..d107704
--- /dev/null
+++ b/tests/btrfs/073.out
@@ -0,0 +1,2 @@
+QA output created by 073
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 7bded39..921ec9b 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -75,3 +75,4 @@
070 auto replace defrag compress
071 auto replace remount compress
072 auto scrub defrag compress
+073 auto scrub remount compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread* [PATCH v5 15/15] btrfs: new case to run defrag and remount with different compress algorithms simultaneously
2014-10-06 10:04 [PATCH v5 00/15] xfstests: new btrfs stress test cases Eryu Guan
` (13 preceding siblings ...)
2014-10-06 10:04 ` [PATCH v5 14/15] btrfs: new case to run btrfs scrub and remount with different compress algorithms simultaneously Eryu Guan
@ 2014-10-06 10:04 ` Eryu Guan
14 siblings, 0 replies; 16+ messages in thread
From: Eryu Guan @ 2014-10-06 10:04 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, Eryu Guan
Run btrfs defrag operations and remount with different compress
algorithms simultaneously with fsstress running in background.
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
---
tests/btrfs/074 | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/074.out | 2 +
tests/btrfs/group | 1 +
3 files changed, 119 insertions(+)
create mode 100755 tests/btrfs/074
create mode 100644 tests/btrfs/074.out
diff --git a/tests/btrfs/074 b/tests/btrfs/074
new file mode 100755
index 0000000..08f3b41
--- /dev/null
+++ b/tests/btrfs/074
@@ -0,0 +1,116 @@
+#! /bin/bash
+# FSQA Test No. btrfs/074
+#
+# Run btrfs defrag operations and remount with different compress algorithms
+# simultaneously with fsstress running in background.
+#
+#-----------------------------------------------------------------------
+# Copyright (C) 2014 Red Hat Inc. 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
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+# we check scratch dev after each loop
+_require_scratch_nocheck
+_require_scratch_dev_pool 4
+_btrfs_get_profile_configs
+
+rm -f $seqres.full
+
+run_test()
+{
+ local mkfs_opts=$1
+ local with_compress=$2
+
+ echo "Test $mkfs_opts with $with_compress" >>$seqres.full
+
+ _scratch_pool_mkfs $mkfs_opts >>$seqres.full 2>&1
+ # make sure we created btrfs with desired options
+ if [ $? -ne 0 ]; then
+ echo "mkfs $mkfs_opts failed"
+ return
+ fi
+ _scratch_mount >>$seqres.full 2>&1
+
+ args=`_scale_fsstress_args -p 20 -n 100 $FSSTRESS_AVOID -d $SCRATCH_MNT/stressdir`
+ echo "Run fsstress $args" >>$seqres.full
+ $FSSTRESS_PROG $args >/dev/null 2>&1 &
+ fsstress_pid=$!
+
+ echo -n "Start defrag worker: " >>$seqres.full
+ _btrfs_stress_defrag $SCRATCH_MNT $with_compress >/dev/null 2>&1 &
+ defrag_pid=$!
+ echo "$defrag_pid" >>$seqres.full
+
+ echo -n "Start remount worker: " >>$seqres.full
+ _btrfs_stress_remount_compress $SCRATCH_MNT >/dev/null 2>&1 &
+ remount_pid=$!
+ echo "$remount_pid" >>$seqres.full
+
+ echo "Wait for fsstress to exit and kill all background workers" >>$seqres.full
+ wait $fsstress_pid
+ kill $defrag_pid $remount_pid
+ wait
+ # wait for the defrag and remount operations to finish
+ while ps aux | grep "btrfs filesystem defrag" | grep -qv grep; do
+ sleep 1
+ done
+ while ps aux | grep "mount.*$SCRATCH_MNT" | grep -qv grep; do
+ sleep 1
+ done
+
+ echo "Scrub the filesystem" >>$seqres.full
+ $BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
+ if [ $? -ne 0 ]; then
+ echo "Scrub find errors in \"$mkfs_opts\" test" | tee -a $seqres.full
+ fi
+
+ _scratch_unmount
+ # we called _require_scratch_nocheck instead of _require_scratch
+ # do check after test for each profile config
+ _check_scratch_fs
+}
+
+echo "Silence is golden"
+for t in "${_btrfs_profile_configs[@]}"; do
+ run_test "$t" nocompress
+ run_test "$t" compress
+done
+
+status=0
+exit
diff --git a/tests/btrfs/074.out b/tests/btrfs/074.out
new file mode 100644
index 0000000..380f065
--- /dev/null
+++ b/tests/btrfs/074.out
@@ -0,0 +1,2 @@
+QA output created by 074
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 921ec9b..c8ac72c 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -76,3 +76,4 @@
071 auto replace remount compress
072 auto scrub defrag compress
073 auto scrub remount compress
+074 auto defrag remount compress
--
1.8.3.1
^ permalink raw reply related [flat|nested] 16+ messages in thread