xfs
[Top] [All Lists]

[PATCH] xfs: log record crc mismatch test

To: xfs@xxxxxxxxxxx, Dave Chinner <david@xxxxxxxxxxxxx>
Subject: [PATCH] xfs: log record crc mismatch test
From: Alexander Tsvetkov <alexander.tsvetkov@xxxxxxxxxx>
Date: Mon, 27 Apr 2015 18:25:57 +0300
Delivered-to: xfs@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0
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

<Prev in Thread] Current Thread [Next in Thread>