Message ID | 1382546683-454-1-git-send-email-eguan@redhat.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
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 [...] -- 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
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 -- 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
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
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.
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 > +} -- 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
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
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