Eryu Guan
2013-Oct-23 11:24 UTC
[PATCH] xfstests btrfs/020: test device replace on RO btrfs
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 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Eric Sandeen
2013-Oct-23 16:25 UTC
Re: [PATCH] xfstests btrfs/020: test device replace on RO 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 >_______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs
Eryu Guan
2013-Oct-23 16:41 UTC
Re: [PATCH] xfstests btrfs/020: test device replace on RO 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 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs
Eryu Guan
2013-Oct-23 16:44 UTC
[PATCH v2] xfstests btrfs/020: test device replace on RO btrfs
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 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Stefan Behrens
2013-Oct-23 17:05 UTC
Re: [PATCH v2] xfstests btrfs/020: test device replace on RO 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 LinuxIt 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[...] -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Eric Sandeen
2013-Oct-23 17:45 UTC
Re: [PATCH v2] xfstests btrfs/020: test device replace on RO 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 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs
Eric Sandeen
2013-Oct-23 17:45 UTC
Re: [PATCH v2] xfstests btrfs/020: test device replace on RO 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 >-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Dave Chinner
2013-Oct-23 21:43 UTC
Re: [PATCH v2] xfstests btrfs/020: test device replace on RO 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 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs
Rich Johnston
2013-Oct-24 00:14 UTC
Re: [PATCH] xfstests btrfs/020: test device replace on RO 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 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs
David Sterba
2013-Oct-24 10:17 UTC
Re: [PATCH v2] xfstests btrfs/020: test device replace on RO 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 > +}_______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs