linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] xfstests btrfs/020: test device replace on RO btrfs
@ 2013-10-23 11:24 Eryu Guan
  2013-10-23 16:25 ` Eric Sandeen
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Eryu Guan @ 2013-10-23 11:24 UTC (permalink / raw)
  To: xfs; +Cc: linux-btrfs, Eryu Guan

btrfs replace on readonly fs should not be allowed.

Regression test case for commit:
bbb651e Btrfs: don't allow the replace procedure on read only filesystems

Signed-off-by: Eryu Guan <eguan@redhat.com>
---
 tests/btrfs/020     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/020.out |  2 ++
 tests/btrfs/group   |  1 +
 3 files changed, 87 insertions(+)
 create mode 100755 tests/btrfs/020
 create mode 100644 tests/btrfs/020.out

diff --git a/tests/btrfs/020 b/tests/btrfs/020
new file mode 100755
index 0000000..cd16dc0
--- /dev/null
+++ b/tests/btrfs/020
@@ -0,0 +1,84 @@
+#! /bin/bash
+# FS QA Test No. btrfs/020
+#
+# btrfs device replace test on RO fs
+#
+# Regression test for commit:
+# bbb651e Btrfs: don't allow the replace procedure on read only filesystems
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2013 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	# failure is the default!
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+	$UMOUNT_PROG $loop_mnt
+	_destroy_loop_device $loop_dev1
+	losetup -d $loop_dev2 >/dev/null 2>&1
+	_destroy_loop_device $loop_dev3
+	rm -rf $loop_mnt
+	rm -f $fs_img1 $fs_img2 $fs_img3
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+
+rm -f $seqres.full
+echo "Silence is golden"
+
+loop_mnt=$TEST_DIR/$seq.$$.mnt
+fs_img1=$TEST_DIR/$seq.$$.img1
+fs_img2=$TEST_DIR/$seq.$$.img2
+fs_img3=$TEST_DIR/$seq.$$.img3
+mkdir $loop_mnt
+$XFS_IO_PROG -f -c "pwrite 0 256m" $fs_img1 >>$seqres.full 2>&1
+$XFS_IO_PROG -f -c "pwrite 0 256m" $fs_img2 >>$seqres.full 2>&1
+$XFS_IO_PROG -f -c "pwrite 0 256m" $fs_img3 >>$seqres.full 2>&1
+
+loop_dev1=`_create_loop_device $fs_img1`
+loop_dev2=`_create_loop_device $fs_img2`
+loop_dev3=`_create_loop_device $fs_img3`
+
+$MKFS_BTRFS_PROG -m raid1 -d raid1 $loop_dev1 $loop_dev2 >>$seqres.full 2>&1
+$MOUNT_PROG -o ro $loop_dev1 $loop_mnt
+
+# Fail the second device and replace with the third
+_destroy_loop_device $loop_dev2
+$BTRFS_UTIL_PROG replace start -B 2 $loop_dev3 $loop_mnt >>$seqres.full 2>&1 && \
+_fail "FAIL: Device replaced on RO btrfs"
+
+status=0
+exit
diff --git a/tests/btrfs/020.out b/tests/btrfs/020.out
new file mode 100644
index 0000000..20d7944
--- /dev/null
+++ b/tests/btrfs/020.out
@@ -0,0 +1,2 @@
+QA output created by 020
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 2f74139..1159499 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -22,3 +22,4 @@
 017 auto quick
 018 auto quick
 019 auto quick
+020 auto quick
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 11:24 [PATCH] xfstests btrfs/020: test device replace on RO btrfs Eryu Guan
@ 2013-10-23 16:25 ` Eric Sandeen
  2013-10-23 16:41   ` Eryu Guan
  2013-10-23 16:44 ` [PATCH v2] " Eryu Guan
  2013-10-24  0:14 ` [PATCH] " Rich Johnston
  2 siblings, 1 reply; 10+ messages in thread
From: Eric Sandeen @ 2013-10-23 16:25 UTC (permalink / raw)
  To: Eryu Guan, xfs; +Cc: linux-btrfs

On 10/23/13 6:24 AM, Eryu Guan wrote:
> btrfs replace on readonly fs should not be allowed.
> 
> Regression test case for commit:
> bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> 
> Signed-off-by: Eryu Guan <eguan@redhat.com>

Could you speed this up by just truncating the loop files to 256m, rather
than writing 256m to each (for a total of 768m IO?)

Also: thanks for including the commit it's testing, that kind of thing
will be super helpful down the line.

-Eric

> ---
>  tests/btrfs/020     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/btrfs/020.out |  2 ++
>  tests/btrfs/group   |  1 +
>  3 files changed, 87 insertions(+)
>  create mode 100755 tests/btrfs/020
>  create mode 100644 tests/btrfs/020.out
> 
> diff --git a/tests/btrfs/020 b/tests/btrfs/020
> new file mode 100755
> index 0000000..cd16dc0
> --- /dev/null
> +++ b/tests/btrfs/020
> @@ -0,0 +1,84 @@
> +#! /bin/bash
> +# FS QA Test No. btrfs/020
> +#
> +# btrfs device replace test on RO fs
> +#
> +# Regression test for commit:
> +# bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> +#
> +#-----------------------------------------------------------------------
> +# Copyright (c) 2013 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	# failure is the default!
> +
> +_cleanup()
> +{
> +	cd /
> +	rm -f $tmp.*
> +	$UMOUNT_PROG $loop_mnt
> +	_destroy_loop_device $loop_dev1
> +	losetup -d $loop_dev2 >/dev/null 2>&1
> +	_destroy_loop_device $loop_dev3
> +	rm -rf $loop_mnt
> +	rm -f $fs_img1 $fs_img2 $fs_img3
> +}
> +
> +trap "_cleanup ; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common/rc
> +. ./common/filter
> +
> +# real QA test starts here
> +_supported_fs btrfs
> +_supported_os Linux
> +
> +rm -f $seqres.full
> +echo "Silence is golden"
> +
> +loop_mnt=$TEST_DIR/$seq.$$.mnt
> +fs_img1=$TEST_DIR/$seq.$$.img1
> +fs_img2=$TEST_DIR/$seq.$$.img2
> +fs_img3=$TEST_DIR/$seq.$$.img3
> +mkdir $loop_mnt
> +$XFS_IO_PROG -f -c "pwrite 0 256m" $fs_img1 >>$seqres.full 2>&1
> +$XFS_IO_PROG -f -c "pwrite 0 256m" $fs_img2 >>$seqres.full 2>&1
> +$XFS_IO_PROG -f -c "pwrite 0 256m" $fs_img3 >>$seqres.full 2>&1
> +
> +loop_dev1=`_create_loop_device $fs_img1`
> +loop_dev2=`_create_loop_device $fs_img2`
> +loop_dev3=`_create_loop_device $fs_img3`
> +
> +$MKFS_BTRFS_PROG -m raid1 -d raid1 $loop_dev1 $loop_dev2 >>$seqres.full 2>&1
> +$MOUNT_PROG -o ro $loop_dev1 $loop_mnt
> +
> +# Fail the second device and replace with the third
> +_destroy_loop_device $loop_dev2
> +$BTRFS_UTIL_PROG replace start -B 2 $loop_dev3 $loop_mnt >>$seqres.full 2>&1 && \
> +_fail "FAIL: Device replaced on RO btrfs"
> +
> +status=0
> +exit
> diff --git a/tests/btrfs/020.out b/tests/btrfs/020.out
> new file mode 100644
> index 0000000..20d7944
> --- /dev/null
> +++ b/tests/btrfs/020.out
> @@ -0,0 +1,2 @@
> +QA output created by 020
> +Silence is golden
> diff --git a/tests/btrfs/group b/tests/btrfs/group
> index 2f74139..1159499 100644
> --- a/tests/btrfs/group
> +++ b/tests/btrfs/group
> @@ -22,3 +22,4 @@
>  017 auto quick
>  018 auto quick
>  019 auto quick
> +020 auto quick
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 16:25 ` Eric Sandeen
@ 2013-10-23 16:41   ` Eryu Guan
  0 siblings, 0 replies; 10+ messages in thread
From: Eryu Guan @ 2013-10-23 16:41 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: xfs, linux-btrfs

On Wed, Oct 23, 2013 at 11:25:50AM -0500, Eric Sandeen wrote:
> On 10/23/13 6:24 AM, Eryu Guan wrote:
> > btrfs replace on readonly fs should not be allowed.
> > 
> > Regression test case for commit:
> > bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> > 
> > Signed-off-by: Eryu Guan <eguan@redhat.com>
> 
> Could you speed this up by just truncating the loop files to 256m, rather
> than writing 256m to each (for a total of 768m IO?)

Sure, and that does save much time, 7s -> 1s on my test box.

V2 will be coming soon.

Thanks for the review!

Eryu

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 11:24 [PATCH] xfstests btrfs/020: test device replace on RO btrfs Eryu Guan
  2013-10-23 16:25 ` Eric Sandeen
@ 2013-10-23 16:44 ` Eryu Guan
  2013-10-23 17:05   ` Stefan Behrens
                     ` (2 more replies)
  2013-10-24  0:14 ` [PATCH] " Rich Johnston
  2 siblings, 3 replies; 10+ messages in thread
From: Eryu Guan @ 2013-10-23 16:44 UTC (permalink / raw)
  To: xfs; +Cc: linux-btrfs, Eryu Guan

btrfs replace on readonly fs should not be allowed.

Regression test case for commit:
bbb651e Btrfs: don't allow the replace procedure on read only filesystems

Signed-off-by: Eryu Guan <eguan@redhat.com>
---
v2: Address Eric's review
 - use truncate to create fs image instead of writing to each file

 tests/btrfs/020     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/020.out |  2 ++
 tests/btrfs/group   |  1 +
 3 files changed, 87 insertions(+)
 create mode 100755 tests/btrfs/020
 create mode 100644 tests/btrfs/020.out

diff --git a/tests/btrfs/020 b/tests/btrfs/020
new file mode 100755
index 0000000..7464bd0
--- /dev/null
+++ b/tests/btrfs/020
@@ -0,0 +1,84 @@
+#! /bin/bash
+# FS QA Test No. btrfs/020
+#
+# btrfs device replace test on RO fs
+#
+# Regression test for commit:
+# bbb651e Btrfs: don't allow the replace procedure on read only filesystems
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2013 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	# failure is the default!
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+	$UMOUNT_PROG $loop_mnt
+	_destroy_loop_device $loop_dev1
+	losetup -d $loop_dev2 >/dev/null 2>&1
+	_destroy_loop_device $loop_dev3
+	rm -rf $loop_mnt
+	rm -f $fs_img1 $fs_img2 $fs_img3
+}
+
+trap "_cleanup ; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs btrfs
+_supported_os Linux
+
+rm -f $seqres.full
+echo "Silence is golden"
+
+loop_mnt=$TEST_DIR/$seq.$$.mnt
+fs_img1=$TEST_DIR/$seq.$$.img1
+fs_img2=$TEST_DIR/$seq.$$.img2
+fs_img3=$TEST_DIR/$seq.$$.img3
+mkdir $loop_mnt
+$XFS_IO_PROG -f -c "truncate 256m" $fs_img1 >>$seqres.full 2>&1
+$XFS_IO_PROG -f -c "truncate 256m" $fs_img2 >>$seqres.full 2>&1
+$XFS_IO_PROG -f -c "truncate 256m" $fs_img3 >>$seqres.full 2>&1
+
+loop_dev1=`_create_loop_device $fs_img1`
+loop_dev2=`_create_loop_device $fs_img2`
+loop_dev3=`_create_loop_device $fs_img3`
+
+$MKFS_BTRFS_PROG -m raid1 -d raid1 $loop_dev1 $loop_dev2 >>$seqres.full 2>&1
+$MOUNT_PROG -o ro $loop_dev1 $loop_mnt
+
+# Fail the second device and replace with the third
+_destroy_loop_device $loop_dev2
+$BTRFS_UTIL_PROG replace start -B 2 $loop_dev3 $loop_mnt >>$seqres.full 2>&1 && \
+_fail "FAIL: Device replaced on RO btrfs"
+
+status=0
+exit
diff --git a/tests/btrfs/020.out b/tests/btrfs/020.out
new file mode 100644
index 0000000..20d7944
--- /dev/null
+++ b/tests/btrfs/020.out
@@ -0,0 +1,2 @@
+QA output created by 020
+Silence is golden
diff --git a/tests/btrfs/group b/tests/btrfs/group
index 2f74139..1159499 100644
--- a/tests/btrfs/group
+++ b/tests/btrfs/group
@@ -22,3 +22,4 @@
 017 auto quick
 018 auto quick
 019 auto quick
+020 auto quick
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 16:44 ` [PATCH v2] " Eryu Guan
@ 2013-10-23 17:05   ` Stefan Behrens
  2013-10-23 17:45     ` Eric Sandeen
  2013-10-23 17:45   ` Eric Sandeen
  2013-10-24 10:17   ` David Sterba
  2 siblings, 1 reply; 10+ messages in thread
From: Stefan Behrens @ 2013-10-23 17:05 UTC (permalink / raw)
  To: Eryu Guan, xfs; +Cc: linux-btrfs

On Thu, 24 Oct 2013 00:44:43 +0800, Eryu Guan wrote:
> btrfs replace on readonly fs should not be allowed.
> 
> Regression test case for commit:
> bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> 
> Signed-off-by: Eryu Guan <eguan@redhat.com>
> ---
> v2: Address Eric's review
>  - use truncate to create fs image instead of writing to each file
> 
>  tests/btrfs/020     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/btrfs/020.out |  2 ++
>  tests/btrfs/group   |  1 +
>  3 files changed, 87 insertions(+)
>  create mode 100755 tests/btrfs/020
>  create mode 100644 tests/btrfs/020.out
> 
> diff --git a/tests/btrfs/020 b/tests/btrfs/020
> new file mode 100755
> index 0000000..7464bd0
> --- /dev/null
> +++ b/tests/btrfs/020
> @@ -0,0 +1,84 @@
> +#! /bin/bash
> +# FS QA Test No. btrfs/020
> +#
> +# btrfs device replace test on RO fs
> +#
> +# Regression test for commit:
> +# bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> +#
> +#-----------------------------------------------------------------------
> +# Copyright (c) 2013 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	# failure is the default!
> +
> +_cleanup()
> +{
> +	cd /
> +	rm -f $tmp.*
> +	$UMOUNT_PROG $loop_mnt
> +	_destroy_loop_device $loop_dev1
> +	losetup -d $loop_dev2 >/dev/null 2>&1
> +	_destroy_loop_device $loop_dev3
> +	rm -rf $loop_mnt
> +	rm -f $fs_img1 $fs_img2 $fs_img3
> +}
> +
> +trap "_cleanup ; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common/rc
> +. ./common/filter
> +
> +# real QA test starts here
> +_supported_fs btrfs
> +_supported_os Linux

It is still unclear to me why everybody adds this "_supported_os Linux"
to the Btrfs tests. Is it because loop devices are used in this
particular test btrfs/020 or is it because of Btrfs itself?
tests/btrfs/001..010 and tests/btrfs/012..020 contain the "_supported_os
Linux".


> +
> +rm -f $seqres.full
> +echo "Silence is golden"
> +
> +loop_mnt=$TEST_DIR/$seq.$$.mnt
> +fs_img1=$TEST_DIR/$seq.$$.img1
> +fs_img2=$TEST_DIR/$seq.$$.img2
> +fs_img3=$TEST_DIR/$seq.$$.img3
> +mkdir $loop_mnt
> +$XFS_IO_PROG -f -c "truncate 256m" $fs_img1 >>$seqres.full 2>&1
> +$XFS_IO_PROG -f -c "truncate 256m" $fs_img2 >>$seqres.full 2>&1
> +$XFS_IO_PROG -f -c "truncate 256m" $fs_img3 >>$seqres.full 2>&1
> +
> +loop_dev1=`_create_loop_device $fs_img1`
> +loop_dev2=`_create_loop_device $fs_img2`
> +loop_dev3=`_create_loop_device $fs_img3`
> +
> +$MKFS_BTRFS_PROG -m raid1 -d raid1 $loop_dev1 $loop_dev2 >>$seqres.full 2>&1
> +$MOUNT_PROG -o ro $loop_dev1 $loop_mnt
> +
> +# Fail the second device and replace with the third
> +_destroy_loop_device $loop_dev2
> +$BTRFS_UTIL_PROG replace start -B 2 $loop_dev3 $loop_mnt >>$seqres.full 2>&1 && \
> +_fail "FAIL: Device replaced on RO btrfs"
> +
> +status=0
> +exit
> diff --git a/tests/btrfs/020.out b/tests/btrfs/020.out
[...]



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 17:05   ` Stefan Behrens
@ 2013-10-23 17:45     ` Eric Sandeen
  2013-10-23 21:43       ` Dave Chinner
  0 siblings, 1 reply; 10+ messages in thread
From: Eric Sandeen @ 2013-10-23 17:45 UTC (permalink / raw)
  To: Stefan Behrens, Eryu Guan, xfs; +Cc: linux-btrfs

On 10/23/13 12:05 PM, Stefan Behrens wrote:
> On Thu, 24 Oct 2013 00:44:43 +0800, Eryu Guan wrote:
>> btrfs replace on readonly fs should not be allowed.
>>
>> Regression test case for commit:
>> bbb651e Btrfs: don't allow the replace procedure on read only filesystems
>>
>> Signed-off-by: Eryu Guan <eguan@redhat.com>
>> ---
>> v2: Address Eric's review
>>  - use truncate to create fs image instead of writing to each file
>>
>>  tests/btrfs/020     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  tests/btrfs/020.out |  2 ++
>>  tests/btrfs/group   |  1 +
>>  3 files changed, 87 insertions(+)
>>  create mode 100755 tests/btrfs/020
>>  create mode 100644 tests/btrfs/020.out
>>
>> diff --git a/tests/btrfs/020 b/tests/btrfs/020
>> new file mode 100755
>> index 0000000..7464bd0
>> --- /dev/null
>> +++ b/tests/btrfs/020
>> @@ -0,0 +1,84 @@
>> +#! /bin/bash
>> +# FS QA Test No. btrfs/020
>> +#
>> +# btrfs device replace test on RO fs
>> +#
>> +# Regression test for commit:
>> +# bbb651e Btrfs: don't allow the replace procedure on read only filesystems
>> +#
>> +#-----------------------------------------------------------------------
>> +# Copyright (c) 2013 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	# failure is the default!
>> +
>> +_cleanup()
>> +{
>> +	cd /
>> +	rm -f $tmp.*
>> +	$UMOUNT_PROG $loop_mnt
>> +	_destroy_loop_device $loop_dev1
>> +	losetup -d $loop_dev2 >/dev/null 2>&1
>> +	_destroy_loop_device $loop_dev3
>> +	rm -rf $loop_mnt
>> +	rm -f $fs_img1 $fs_img2 $fs_img3
>> +}
>> +
>> +trap "_cleanup ; exit \$status" 0 1 2 3 15
>> +
>> +# get standard environment, filters and checks
>> +. ./common/rc
>> +. ./common/filter
>> +
>> +# real QA test starts here
>> +_supported_fs btrfs
>> +_supported_os Linux
> 
> It is still unclear to me why everybody adds this "_supported_os Linux"
> to the Btrfs tests. Is it because loop devices are used in this
> particular test btrfs/020 or is it because of Btrfs itself?
> tests/btrfs/001..010 and tests/btrfs/012..020 contain the "_supported_os
> Linux".

Historically xfstests could be run on IRIX & Linux, so some tests needed
to differentiate for the capabilities of the OS.

We could probably look at how _supported_os works, and make sure that
if it's absent, it means "no OS restrictions" and document it as such.

"_supported_fs btrfs" is probably sufficient to know that we can run this
test; if btrfs is ever ported to, say, Solaris, it *should* run there too.  ;)

-Eric


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 16:44 ` [PATCH v2] " Eryu Guan
  2013-10-23 17:05   ` Stefan Behrens
@ 2013-10-23 17:45   ` Eric Sandeen
  2013-10-24 10:17   ` David Sterba
  2 siblings, 0 replies; 10+ messages in thread
From: Eric Sandeen @ 2013-10-23 17:45 UTC (permalink / raw)
  To: Eryu Guan, xfs; +Cc: linux-btrfs

On 10/23/13 11:44 AM, Eryu Guan wrote:
> btrfs replace on readonly fs should not be allowed.
> 
> Regression test case for commit:
> bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> 
> Signed-off-by: Eryu Guan <eguan@redhat.com>

Reviewed-by: Eric Sandeen <sandeen@redhat.com>

> ---
> v2: Address Eric's review
>  - use truncate to create fs image instead of writing to each file
> 
>  tests/btrfs/020     | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/btrfs/020.out |  2 ++
>  tests/btrfs/group   |  1 +
>  3 files changed, 87 insertions(+)
>  create mode 100755 tests/btrfs/020
>  create mode 100644 tests/btrfs/020.out
> 
> diff --git a/tests/btrfs/020 b/tests/btrfs/020
> new file mode 100755
> index 0000000..7464bd0
> --- /dev/null
> +++ b/tests/btrfs/020
> @@ -0,0 +1,84 @@
> +#! /bin/bash
> +# FS QA Test No. btrfs/020
> +#
> +# btrfs device replace test on RO fs
> +#
> +# Regression test for commit:
> +# bbb651e Btrfs: don't allow the replace procedure on read only filesystems
> +#
> +#-----------------------------------------------------------------------
> +# Copyright (c) 2013 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	# failure is the default!
> +
> +_cleanup()
> +{
> +	cd /
> +	rm -f $tmp.*
> +	$UMOUNT_PROG $loop_mnt
> +	_destroy_loop_device $loop_dev1
> +	losetup -d $loop_dev2 >/dev/null 2>&1
> +	_destroy_loop_device $loop_dev3
> +	rm -rf $loop_mnt
> +	rm -f $fs_img1 $fs_img2 $fs_img3
> +}
> +
> +trap "_cleanup ; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common/rc
> +. ./common/filter
> +
> +# real QA test starts here
> +_supported_fs btrfs
> +_supported_os Linux
> +
> +rm -f $seqres.full
> +echo "Silence is golden"
> +
> +loop_mnt=$TEST_DIR/$seq.$$.mnt
> +fs_img1=$TEST_DIR/$seq.$$.img1
> +fs_img2=$TEST_DIR/$seq.$$.img2
> +fs_img3=$TEST_DIR/$seq.$$.img3
> +mkdir $loop_mnt
> +$XFS_IO_PROG -f -c "truncate 256m" $fs_img1 >>$seqres.full 2>&1
> +$XFS_IO_PROG -f -c "truncate 256m" $fs_img2 >>$seqres.full 2>&1
> +$XFS_IO_PROG -f -c "truncate 256m" $fs_img3 >>$seqres.full 2>&1
> +
> +loop_dev1=`_create_loop_device $fs_img1`
> +loop_dev2=`_create_loop_device $fs_img2`
> +loop_dev3=`_create_loop_device $fs_img3`
> +
> +$MKFS_BTRFS_PROG -m raid1 -d raid1 $loop_dev1 $loop_dev2 >>$seqres.full 2>&1
> +$MOUNT_PROG -o ro $loop_dev1 $loop_mnt
> +
> +# Fail the second device and replace with the third
> +_destroy_loop_device $loop_dev2
> +$BTRFS_UTIL_PROG replace start -B 2 $loop_dev3 $loop_mnt >>$seqres.full 2>&1 && \
> +_fail "FAIL: Device replaced on RO btrfs"
> +
> +status=0
> +exit
> diff --git a/tests/btrfs/020.out b/tests/btrfs/020.out
> new file mode 100644
> index 0000000..20d7944
> --- /dev/null
> +++ b/tests/btrfs/020.out
> @@ -0,0 +1,2 @@
> +QA output created by 020
> +Silence is golden
> diff --git a/tests/btrfs/group b/tests/btrfs/group
> index 2f74139..1159499 100644
> --- a/tests/btrfs/group
> +++ b/tests/btrfs/group
> @@ -22,3 +22,4 @@
>  017 auto quick
>  018 auto quick
>  019 auto quick
> +020 auto quick
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 17:45     ` Eric Sandeen
@ 2013-10-23 21:43       ` Dave Chinner
  0 siblings, 0 replies; 10+ messages in thread
From: Dave Chinner @ 2013-10-23 21:43 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Stefan Behrens, Eryu Guan, xfs, linux-btrfs

On Wed, Oct 23, 2013 at 12:45:07PM -0500, Eric Sandeen wrote:
> On 10/23/13 12:05 PM, Stefan Behrens wrote:
> > On Thu, 24 Oct 2013 00:44:43 +0800, Eryu Guan wrote:
> >> +# real QA test starts here
> >> +_supported_fs btrfs
> >> +_supported_os Linux
> > 
> > It is still unclear to me why everybody adds this "_supported_os Linux"
> > to the Btrfs tests. Is it because loop devices are used in this
> > particular test btrfs/020 or is it because of Btrfs itself?
> > tests/btrfs/001..010 and tests/btrfs/012..020 contain the "_supported_os
> > Linux".
> 
> Historically xfstests could be run on IRIX & Linux, so some tests needed
> to differentiate for the capabilities of the OS.
> 
> We could probably look at how _supported_os works, and make sure that
> if it's absent, it means "no OS restrictions" and document it as such.

It already does work this way. If you don't add it, then the test
will always run.

However, it also has the documentation factor of saying "we expect
this to work on Linux's btrfs implementation *only*". IOWs, it's
good practice to add the _supported_os field as xfstests is not
designed to be Linux specific....

> "_supported_fs btrfs" is probably sufficient to know that we can run this
> test; if btrfs is ever ported to, say, Solaris, it *should* run there too.  ;)

Unless, of course, there are differences in implementation, which
there would be given that, for example, Solaris handles devices
significantly differently to Linux. :)

Cheers,

Dave.
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 11:24 [PATCH] xfstests btrfs/020: test device replace on RO btrfs Eryu Guan
  2013-10-23 16:25 ` Eric Sandeen
  2013-10-23 16:44 ` [PATCH v2] " Eryu Guan
@ 2013-10-24  0:14 ` Rich Johnston
  2 siblings, 0 replies; 10+ messages in thread
From: Rich Johnston @ 2013-10-24  0:14 UTC (permalink / raw)
  To: Eryu Guan, xfs; +Cc: linux-btrfs

This has been committed.

Thanks
--Rich

commit 5b8e9ac03259a11de8fd84d939f25a2cbbafab18
Author: Eryu Guan <eguan@redhat.com>
Date:   Wed Oct 23 16:44:43 2013 +0000

     xfstests btrfs/020: test device replace on RO btrfs

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
  2013-10-23 16:44 ` [PATCH v2] " Eryu Guan
  2013-10-23 17:05   ` Stefan Behrens
  2013-10-23 17:45   ` Eric Sandeen
@ 2013-10-24 10:17   ` David Sterba
  2 siblings, 0 replies; 10+ messages in thread
From: David Sterba @ 2013-10-24 10:17 UTC (permalink / raw)
  To: Eryu Guan; +Cc: xfs, linux-btrfs

On Thu, Oct 24, 2013 at 12:44:43AM +0800, Eryu Guan wrote:
> +_cleanup()
> +{
> +	cd /

Using root as temporary directory?

> +	rm -f $tmp.*
> +	$UMOUNT_PROG $loop_mnt
> +	_destroy_loop_device $loop_dev1
> +	losetup -d $loop_dev2 >/dev/null 2>&1
> +	_destroy_loop_device $loop_dev3
> +	rm -rf $loop_mnt
> +	rm -f $fs_img1 $fs_img2 $fs_img3
> +}

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2013-10-24 10:17 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-23 11:24 [PATCH] xfstests btrfs/020: test device replace on RO btrfs Eryu Guan
2013-10-23 16:25 ` Eric Sandeen
2013-10-23 16:41   ` Eryu Guan
2013-10-23 16:44 ` [PATCH v2] " Eryu Guan
2013-10-23 17:05   ` Stefan Behrens
2013-10-23 17:45     ` Eric Sandeen
2013-10-23 21:43       ` Dave Chinner
2013-10-23 17:45   ` Eric Sandeen
2013-10-24 10:17   ` David Sterba
2013-10-24  0:14 ` [PATCH] " Rich Johnston

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).