Added new test case for simulation of V5 filesystem
log crc record corruption using of external log.
Signed-off-by: Alexander Tsvetkov <alexander.tsvetkov@xxxxxxxxxx>
---
tests/xfs/005 | 28 ++++++++++++++++++++++++++--
tests/xfs/005.out | 3 +++
2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/tests/xfs/005 b/tests/xfs/005
index fade4bb..ba0dcbb 100755
--- a/tests/xfs/005
+++ b/tests/xfs/005
@@ -1,7 +1,7 @@
#! /bin/bash
# FS QA Test No. 005
#
-# Test that a bad crc on a primary V5 superblock will fail the mount
+# Test that a bad crc on a V5 filesystem will fail the mount
#
# 10e6e65 xfs: be more forgiving of a v4 secondary sb w/ junk in v5 fields
# inadvertently caused primary SB CRC failures to not error out, this
@@ -55,10 +55,12 @@ _supported_os Linux
_require_scratch_nocheck
_require_xfs_mkfs_crc
+_require_logdev
+logsize=2560
rm -f $seqres.full
-_scratch_mkfs_xfs -m crc=1 >> $seqres.full 2>&1 || _fail "mkfs failed"
+_scratch_mkfs_xfs -m crc=1 -lsize=${logsize}b >> $seqres.full 2>&1 ||
_fail "mkfs failed"
# Zap the crc. xfs_db updates the CRC post-write, so poke it directly
$XFS_IO_PROG -c "pwrite 224 4" -c fsync $SCRATCH_DEV | _filter_xfs_io
@@ -66,6 +68,28 @@ $XFS_IO_PROG -c "pwrite 224 4" -c fsync $SCRATCH_DEV
| _filter_xfs_io
# should FAIL, the crc is bad; golden output contains mount failure
_scratch_mount 2>&1 | filter_mount
+_scratch_unmount &> /dev/null
+_scratch_mkfs_xfs -m crc=1 -lsize=${logsize}b >> $seqres.full 2>&1 ||
_fail "mkfs failed"
+_scratch_mount >> $seqres.full 2>&1 || _fail "mount failed"
+
+# Run filesytem exercising for some time
+_param="-f link=10 -f creat=10 -f mkdir=10 -f truncate=5 -f symlink=10"
+$FSSTRESS_PROG $_param -s 1 $FSSTRESS_AVOID -n 1000 -d $SCRATCH_MNT &>
/dev/null
+sleep 3
+
+# Shutdown filesystem and unmount
+src/godown -v $SCRATCH_MNT >> $seqres.full
+killall -q fsstress
+wait
+sleep 3
+_scratch_unmount
+
+# Zap log record crc.
+$XFS_IO_PROG -c "pwrite 5000 5" $SCRATCH_LOGDEV | _filter_xfs_io
+
+# should FAIL, log record crc is bad; golden output contains mount failure
+_scratch_mount 2>&1 | filter_mount
+
# success, all done
status=0
exit
diff --git a/tests/xfs/005.out b/tests/xfs/005.out
index 13d0125..8907301 100644
--- a/tests/xfs/005.out
+++ b/tests/xfs/005.out
@@ -2,3 +2,6 @@ QA output created by 005
wrote 4/4 bytes at offset 224
XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
mount: Structure needs cleaning
+wrote 5/5 bytes at offset 5000
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+mount: Structure needs cleaning
--
1.9.3
_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs