Skip to contentSkip to conversation

xfs/087: test f2fs selectively

PATCH In review Jaegeuk Kim 2 participants 4 messages Jan 9, 2015 – Jan 22, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v3 1/2 xfs/087: test f2fs selectively

This patch add the f2fs support for xfs/087 with goingdown.

---
 common/rc              |  10 +
 tests/xfs/087          |  53 +++--
 tests/xfs/087.out      | 389 ---------------------------------
 tests/xfs/087.out.f2fs | 583 +++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/087.out.xfs  | 389 +++++++++++++++++++++++++++++++++
 5 files changed, 1019 insertions(+), 405 deletions(-)
 delete mode 100644 tests/xfs/087.out
 create mode 100644 tests/xfs/087.out.f2fs
 create mode 100644 tests/xfs/087.out.xfs
common/rc +10 -0
index 5ce3322..2a50378 100644
@@ -2091,6 +2091,16 @@ _link_out_file()
 	fi
 }
 
+_link_out_file_fs()
+{
+	if [ -z "$1" -o -z "$2" ]; then
+		echo Error must pass src and dst.
+		exit
+	fi
+	rm -f $2
+	ln -s $1.$FSTYP $2
+}
+
 _die()
 {
         echo $@
tests/xfs/087 +37 -16

95 lines not on this page · raw message

tests/xfs/087.out deleted +0 -389

389 lines not on this page · raw message

tests/xfs/087.out.f2fs new file +583 -0

583 lines not on this page · raw message

tests/xfs/087.out.xfs new file +389 -0

389 lines not on this page · raw message

Signature · 1 line
2.1.1
#1 lore raw

PATCH v3 2/2 xfs/087: move to shared/087

This patch moves xfs/087 to shared/.

---
 tests/shared/087          | 174 ++++++++++++++
 tests/shared/087.out.f2fs | 583 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/shared/087.out.xfs  | 389 +++++++++++++++++++++++++++++++
 tests/shared/group        |   1 +
 tests/xfs/087             | 174 --------------
 tests/xfs/087.out.f2fs    | 583 ----------------------------------------------
 tests/xfs/087.out.xfs     | 389 -------------------------------
 tests/xfs/group           |   1 -
 8 files changed, 1147 insertions(+), 1147 deletions(-)
 create mode 100755 tests/shared/087
 create mode 100644 tests/shared/087.out.f2fs
 create mode 100644 tests/shared/087.out.xfs
 delete mode 100755 tests/xfs/087
 delete mode 100644 tests/xfs/087.out.f2fs
 delete mode 100644 tests/xfs/087.out.xfs
tests/shared/087 new file +174 -0
new file mode 100755
index 0000000..9017bfd
@@ -0,0 +1,174 @@
+#! /bin/bash
+# FS QA Test No. 087
+#
+# * like 086 but want to create more/different kinds of metadata
+#   and so will use fsstress
+# * also can interrupt metadata with godown
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2004 Silicon Graphics, 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
+#
+#-----------------------------------------------------------------------
+#
+
+seqfull=$0
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1	# failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+. ./common/log
+. ./common/quota
+
+_do_meta()
+{
+    out=$SCRATCH_MNT/fsstress
+    count=10000
+    param="-p 4 -z -f rmdir=10 -f link=10 -f creat=10 -f mkdir=10 \
+           -f rename=30 -f stat=30 -f unlink=30 -f truncate=20"
+    _echofull "calling fsstress $param -m8 -n $count"
+    FSSTRESS_ARGS=`_scale_fsstress_args $param $FSSTRESS_AVOID -m 8 -n $count -d $out`
+    if ! $FSSTRESS_PROG $FSSTRESS_ARGS >>$seqres.full 2>&1
+    then
+	_echofull "fsstress failed"
+    fi
+}
+
+# real QA test starts here
+_supported_fs xfs f2fs
+_supported_os IRIX Linux
+
+rm -f $seqres.full $tmp.*
+_require_scratch
+
+if [ "$FSTYP" == "xfs" ]; then
+    _require_v2log
+    _require_xfs_quota
+fi
+
+echo "*** init FS"
+umount $SCRATCH_DEV >/dev/null 2>&1
+
+cat >$tmp.seq.params.xfs <<EOF
+# mkfs-opt             mount-opt
+# ------------------------------
+  version=2            uquota,logbsize=32k
+  version=2,su=4096    uquota,logbsize=32k
+  version=2,su=32768   uquota,logbsize=32k
+  version=2            uquota,logbsize=64k
+  version=2,su=64k     uquota,logbsize=64k
+  version=2            uquota,logbsize=128k
+  version=2,su=128k    uquota,logbsize=128k
+  version=2            uquota,logbsize=256k
+  version=2,su=256k    uquota,logbsize=256k
+EOF
+
+cat >$tmp.seq.params.f2fs <<EOF
+# mkfs-opt  mount-opt
+# ---------------------------
+  test1     active_logs=6,background_gc=off
+  test2     active_logs=6,background_gc=off,inline_data
+  test3     active_logs=6,background_gc=off,inline_dentry
+  test4     active_logs=6,background_gc=off,inline_dentry,inline_data
+  test5     active_logs=6,background_gc=off,disable_roll_forward
+  test6     active_logs=4,background_gc=off
+  test7     active_logs=2,background_gc=off
+EOF
+
+cat $tmp.seq.params.$FSTYP > $tmp.seq.params
+
+# link correct .out file
+_link_out_file_fs $seq.out $seqfull.out
+
+cat $tmp.seq.params \
+| while read mkfs mnt restofline
+do
+    if [ "$mkfs" = "#" ]; then 
+	continue
+    fi
+
+    echo "--- mkfs=$mkfs, mnt=$mnt ---"
+    export MKFS_OPTIONS="-l $mkfs"
+    export MOUNT_OPTIONS="-o $mnt"
+
+    # mkfs the FS
+    _echofull "mkfs"
+    _scratch_mkfs >>$seqres.full 2>&1
+    if [ $? -ne 0 ] ; then 
+	_echofull "mkfs failed: $MKFS_OPTIONS"
+	continue
+    fi
+
+    # mount the FS
+    _echofull "mount"
+    if ! _scratch_mount >>$seqres.full 2>&1; then
+	_echofull "mount failed: $MOUNT_OPTIONS"
+	continue
+    fi
+
+    # create the metadata
+    _do_meta
+
+    # check before on what FS should look like
+    _echofull "ls -RF SCRATCH_MNT"
+    ls -RF $SCRATCH_MNT >$tmp.ls1
+
+    _echofull "godown"
+    src/godown -v -f $SCRATCH_MNT >> $seqres.full
+
+    _echofull "unmount"
+    umount $SCRATCH_DEV >>$seqres.full 2>&1 \
+	|| _fail "umount failed"
+
+    _echofull "logprint after going down..."
+    _print_logstate
+
+    _full "logprint headers"
+    _scratch_xfs_logprint -n >>$seqres.full 2>&1
+
+    _echofull "mount with replay"
+    _scratch_mount >>$seqres.full 2>&1 \
+	|| _fail "mount failed: $MOUNT_OPTIONS"
+
+    # check on what FS looks like after log recovery
+    _echofull "ls -RF SCRATCH_MNT"
+    ls -RF $SCRATCH_MNT >$tmp.ls2
+
+    _echofull "diff ls before and after"
+    diff -us $tmp.ls1 $tmp.ls2 | sed "s#$tmp#TMP#g"
+
+    _echofull "unmount"
+    umount $SCRATCH_MNT
+
+    _echofull "logprint after mount and replay..."
+    _print_logstate
+
+    if _check_scratch_fs; then
+	_echofull "filesystem is checked ok"
+    else
+	_echofull "filesystem is NOT ok"
+    fi
+done
+
+status=0 
+exit
tests/shared/087.out.f2fs new file +583 -0

583 lines not on this page · raw message

tests/shared/087.out.xfs new file +389 -0

389 lines not on this page · raw message

tests/shared/group +1 -0
index 429f2b4..c6e702d 100644
@@ -6,6 +6,7 @@
 006 auto enospc
 032 mkfs auto quick
 051 acl udf auto quick
+087 log v2log auto quota stress
 272 auto enospc rw
 289 auto quick
 298 auto trim
tests/xfs/087 deleted +0 -174

174 lines not on this page · raw message

tests/xfs/087.out.f2fs deleted +0 -583

583 lines not on this page · raw message

tests/xfs/087.out.xfs deleted +0 -389

389 lines not on this page · raw message

tests/xfs/group +0 -1
index 496630d..1e4be94 100644
@@ -76,7 +76,6 @@
 084 ioctl rw auto
 085 log auto quick
 086 log v2log auto
-087 log v2log auto quota stress
 090 rw auto
 092 other auto quick
 094 metadata dir ioctl auto
Signature · 1 line
2.1.1
#2 lore raw
In reply to Jaegeuk Kim
Quoted 2 lines · Jaegeuk Kim

This patch add the f2fs support for xfs/087 with goingdown.

xfs/087 is not really a test that should be made generic/shared; it's testing a bunch of different XFS specific mount options and log recovery behaviour which has no relevance to any other filesystem.

If you want to take xfs specific tests that are only XFS specific because of the shutdowns they use, look at these ones:

xfs/053 (data exposure)
xfs/137 (data vs filesize)
xfs/138 (data vs filesize vs truncate)
xfs/139 (data vs filesize vs partial truncate)
xfs/140 (data vs filesize vs extending truncate)
xfs/179 (data vs filesize w/ fsync)
xfs/180 (data vs filesize w/ sync)
xfs/182 (data vs filesize w/ recovery)
xfs/200 (recovery vs ro-block device)
xfs/306 (fsstress vs recovery)

These can all be made generic with very little effort - "_require_shutdown" is probably all that is necessary for most of them....

Also, we really are trying not to add more "shared" tests - with the correct "_requires_foo" rules we can just place those tests in generic/ and filesystems that don't support "foo" will avoid it.

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]
#3 lore raw
Quoted 7 lines · Dave Chinner
Quoted 2 lines · Jaegeuk Kim

This patch add the f2fs support for xfs/087 with goingdown.

xfs/087 is not really a test that should be made generic/shared; it's testing a bunch of different XFS specific mount options and log recovery behaviour which has no relevance to any other filesystem.

When I took a closer look at clean and dirty logs in xfs, I thought that they are very similar to the f2fs's logs.
If it is correct that the dirty log in xfs means that there are something to replay metadata operations, I think f2fs can also detect them in a same manner.

So, actually I've already been testing xfs/086 and xfs/087 on f2fs having clean and dirty log statement (which is retrieved by f2fs-tools).

Additionally, I've found that f2fs can be added into:
xfs/051
xfs/085

Anyway, if you think these are still not proper testcases, let me know.

Quoted 15 lines

If you want to take xfs specific tests that are only XFS specific because of the shutdowns they use, look at these ones:

xfs/053 (data exposure)
xfs/137 (data vs filesize)
xfs/138 (data vs filesize vs truncate)
xfs/139 (data vs filesize vs partial truncate)
xfs/140 (data vs filesize vs extending truncate)
xfs/179 (data vs filesize w/ fsync)
xfs/180 (data vs filesize w/ sync)
xfs/182 (data vs filesize w/ recovery)
xfs/200 (recovery vs ro-block device)
xfs/306 (fsstress vs recovery)

Quoted 7 lines

These can all be made generic with very little effort - "_require_shutdown" is probably all that is necessary for most of them....

Also, we really are trying not to add more "shared" tests - with the correct "_requires_foo" rules we can just place those tests in generic/ and filesystems that don't support "foo" will avoid it.

Thank you for the list. :)
I'll check and try to follow the rule for _requires_foo.

Thanks,

Quoted 7 lines

Cheers,

Dave.

Signature · 2 lines
Dave Chinner
[email protected]