linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Anand Jain <anand.jain@oracle.com>
To: fstests@vger.kernel.org
Cc: linux-btrfs@vger.kernel.org, david@fromorbit.com, fdmanana@gmail.com
Subject: [PATCH v3 3/3] xfstests: btrfs: test device delete with EIO on src dev
Date: Mon, 11 May 2015 21:49:11 +0800	[thread overview]
Message-ID: <1431352151-3117-4-git-send-email-anand.jain@oracle.com> (raw)
In-Reply-To: <1430388527-16700-1-git-send-email-anand.jain@oracle.com>

From: Anand Jain <Anand.Jain@oracle.com>

This test case tests if the device delete would work when
the source device has failed with EIO errors.

EIO errors are achieved usign the DM device.

Also this test needs the latest btrfs-progs and kernel patch
under title
  [PATCH] device delete by devid

When this patch is not found in the btrfs-progs, this test
will not run. However when the require patch is not found
in the kernel it will fail gracefully.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
---
v2->v3: accepts Filipe Manana's review comments, thanks
v1->v2: accepts Dave Chinner's review comments, thanks
 common/rc           |    6 ++++
 tests/btrfs/088     |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/088.out |   10 ++++++
 tests/btrfs/group   |    1 +
 4 files changed, 94 insertions(+), 0 deletions(-)
 create mode 100755 tests/btrfs/088
 create mode 100644 tests/btrfs/088.out

diff --git a/common/rc b/common/rc
index 447ab7f..aca7a62 100644
--- a/common/rc
+++ b/common/rc
@@ -2685,6 +2685,12 @@ _require_test_fcntl_advisory_locks()
 		_notrun "Require fcntl advisory locks support"
 }
 
+_require_btrfs_dev_del_by_devid()
+{
+	$BTRFS_UTIL_PROG device delete --help | egrep devid > /dev/null 2>&1
+	[ $? -eq 0 ] || _notrun "$BTRFS_UTIL_PROG too old (must support 'btrfs device delete <devid> /<mnt>')"
+}
+
 _get_total_inode()
 {
 	if [ -z "$1" ]; then
diff --git a/tests/btrfs/088 b/tests/btrfs/088
new file mode 100755
index 0000000..5ab226f
--- /dev/null
+++ b/tests/btrfs/088
@@ -0,0 +1,77 @@
+#! /bin/bash
+# FS QA Test No. btrfs/088
+#
+# test device delete when the source device has EIO
+#
+# Copyright (c) 2015 Oracle.  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!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+
+_cleanup()
+{
+	_cleanup_dmerror
+	rm -f $tmp
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+. ./common/filter.btrfs
+. ./common/dmerror
+
+_supported_fs btrfs
+_supported_os Linux
+_need_to_be_root
+_require_scratch_dev_pool 3
+_require_btrfs_dev_del_by_devid
+_require_dmerror
+
+rm -f $seqres.full
+
+dev1="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $2}'`"
+dev2="`echo $SCRATCH_DEV_POOL | $AWK_PROG '{print $3}'`"
+
+_init_dmerror
+_scratch_mkfs_dmerror "-f -d raid1 -m raid1 $dev1 $dev2"
+_mount_dmerror
+
+$BTRFS_UTIL_PROG filesystem show -m $SCRATCH_MNT | _filter_btrfs_filesystem_show
+
+error_devid=`$BTRFS_UTIL_PROG filesystem show -m $SCRATCH_MNT |\
+			egrep $DMERROR_DEV | $AWK_PROG '{print $2}'`
+
+snapshot_cmd="$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT"
+snapshot_cmd="$snapshot_cmd $SCRATCH_MNT/snap_\`date +'%H_%M_%S_%N'\`"
+run_check $FSSTRESS_PROG -d $SCRATCH_MNT -n 200 -p 8 $FSSTRESS_AVOID -x "$snapshot_cmd" -X 50 >&/dev/null
+
+# now load the error into the DMERROR_DEV
+_load_dmerror_table
+
+_run_btrfs_util_prog device delete $error_devid $SCRATCH_MNT
+
+$BTRFS_UTIL_PROG filesystem show -m $SCRATCH_MNT | _filter_btrfs_filesystem_show
+
+status=0; exit
diff --git a/tests/btrfs/088.out b/tests/btrfs/088.out
new file mode 100644
index 0000000..32ee8f4
--- /dev/null
+++ b/tests/btrfs/088.out
@@ -0,0 +1,10 @@
+QA output created by 088
+Label: none  uuid: <UUID>
+	Total devices <NUM> FS bytes used <SIZE>
+	devid <DEVID> size <SIZE> used <SIZE> path SCRATCH_DEV
+	devid <DEVID> size <SIZE> used <SIZE> path /dev/mapper/error-test
+
+Label: none  uuid: <UUID>
+	Total devices <NUM> FS bytes used <SIZE>
+	devid <DEVID> size <SIZE> used <SIZE> path SCRATCH_DEV
+
diff --git a/tests/btrfs/group b/tests/btrfs/group
index d66b4fc..d474c47 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -90,3 +90,4 @@
 085 auto quick metadata subvol
 086 auto quick clone
 087 auto quick replace
+088 auto quick replace
-- 
1.7.1


  parent reply	other threads:[~2015-05-11 13:39 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-30 10:08 [PATCH 0/3] dm error based test cases Anand Jain
2015-04-30 10:08 ` [PATCH 1/3] xfstests: btrfs: add functions to create dm-error device Anand Jain
2015-05-04 23:46   ` Dave Chinner
2015-04-30 10:08 ` [PATCH 2/3] xfstests: btrfs: test device replace, with EIO on the src dev Anand Jain
2015-05-05  0:14   ` Dave Chinner
2015-05-05 15:13     ` Anand Jain
2015-05-05 23:11       ` Dave Chinner
2015-04-30 10:08 ` [PATCH 3/3] xfstests: btrfs: test device delete with EIO on " Anand Jain
2015-05-05 19:03 ` [PATCH v2 0/3] dm error based test cases Anand Jain
2015-05-05 19:03   ` [PATCH v2 1/3] xfstests: btrfs: add functions to create dm-error device Anand Jain
2015-05-05 22:22     ` [PATCH v2.1 " Anand Jain
2015-05-05 19:03   ` [PATCH v2 2/3] xfstests: btrfs: test device replace, with EIO on the src dev Anand Jain
2015-05-06  8:54     ` Filipe David Manana
2015-05-05 19:03   ` [PATCH v2 3/3] xfstests: btrfs: test device delete with EIO on " Anand Jain
2015-08-07 10:31     ` Filipe David Manana
2015-08-13 14:35       ` Anand Jain
2015-05-11 13:49 ` [PATCH v3 0/3] dm error based test cases Anand Jain
2015-05-11 13:49 ` [PATCH v3 1/3] xfstests: btrfs: add functions to create dm-error device Anand Jain
2015-05-11 13:49 ` [PATCH v3 2/3] xfstests: btrfs: test device replace, with EIO on the src dev Anand Jain
2015-05-11 13:49 ` Anand Jain [this message]
2015-07-22 10:12 ` [PATCH v4 0/3] dm error based test cases Anand Jain
2015-07-22 10:12   ` [PATCH v4 1/3] xfstests: btrfs: add functions to create dm-error device Anand Jain
2015-07-22 10:12   ` [PATCH v4 2/3] xfstests: btrfs: test device replace, with EIO on the src dev Anand Jain
2015-07-22 10:12   ` [PATCH v4 3/3] xfstests: btrfs: test device delete with EIO on " Anand Jain
2015-07-22 10:14 ` [PATCH v4 0/3] dm error based test cases Anand Jain
2015-07-22 10:14   ` [PATCH v4 1/3] xfstests: btrfs: add functions to create dm-error device Anand Jain
2015-08-07 10:26     ` Filipe David Manana
2015-08-13 14:39       ` Anand Jain
2015-07-22 10:14   ` [PATCH v4 2/3] xfstests: btrfs: test device replace, with EIO on the src dev Anand Jain
2015-08-07 10:27     ` Filipe David Manana
2015-08-13 14:43       ` Anand Jain
2015-07-22 10:14   ` [PATCH v4 3/3] xfstests: btrfs: test device delete with EIO on " Anand Jain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1431352151-3117-4-git-send-email-anand.jain@oracle.com \
    --to=anand.jain@oracle.com \
    --cc=david@fromorbit.com \
    --cc=fdmanana@gmail.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).