Create test 178 as described by bnaujok.
authorMohamed Barwani <mohamedb@sgi.com>
Mon, 30 Jul 2007 15:59:01 +0000 (15:59 +0000)
committerMohamed Barwani <mohamedb@sgi.com>
Mon, 30 Jul 2007 15:59:01 +0000 (15:59 +0000)
Merge of master-melb:xfs-cmds:29273a by kenmcd.

  New Test

178 [new file with mode: 0755]
178.out [new file with mode: 0644]
common.filter
group

diff --git a/178 b/178
new file mode 100755 (executable)
index 0000000..f204611
--- /dev/null
+++ b/178
@@ -0,0 +1,84 @@
+#! /bin/sh
+# FS QA Test No. 178
+#
+# Reproduce PV#:967665
+# Test if mkfs.xfs wipes old AG headers when using -f option
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2007 Silicon Graphics, Inc.  All Rights Reserved.
+#-----------------------------------------------------------------------
+#
+# creator
+owner=mohamedb@sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -f $tmp.*
+}
+# dd the 1st sector then repair
+_dd_repair_check() 
+{
+       #dd first sector
+       dd if=/dev/zero of=$1 bs=$2 count=1 2>&1 | _filter_dd
+       #xfs_repair
+       _scratch_xfs_repair 2>&1 | _filter_repair 
+       #check repair
+       if _check_scratch_fs; then
+               echo "repair passed"
+       else
+               echo "repair failed!"
+       fi
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.repair
+
+# real QA test starts here
+
+# Modify as appropriate.
+_supported_fs xfs 
+_supported_os Linux
+
+# From the PV
+# o Summary of testing:
+#    1. mkfs.xfs a default filesystem, note agcount value.
+#    2. dd zero first sector and repair and verify.
+#    3. mkfs.xfs overriding agcount to a smaller value 
+#             (ie. each AG is bigger)
+#    4. dd zero first sector, repair and verify.
+#          -> old mkfs.xfs will cause repair to incorrectly
+#             fix filesystem, new mkfs.xfs will be fine.
+
+_require_scratch
+_scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs \
+        || _fail "mkfs failed!"
+
+# By executing the followint tmp file, will get on the mkfs options stored in 
+# variables
+. $tmp.mkfs
+
+[ $agcount -le 2 ] && _notrun "Test requires more than 2 AGs."
+
+_dd_repair_check $SCRATCH_DEV $sectsz
+
+# smaller AGCOUNT
+let "agcount=$agcount-2"
+_scratch_mkfs_xfs -dagcount=$agcount >/dev/null 2>&1 \
+        || _fail "mkfs failed!"
+
+_dd_repair_check $SCRATCH_DEV $sectsz
+
+# success, all done
+status=0
+exit
diff --git a/178.out b/178.out
new file mode 100644 (file)
index 0000000..1709863
--- /dev/null
+++ b/178.out
@@ -0,0 +1,79 @@
+QA output created by 178
+meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks
+data     = bsize=XXX blocks=XXX, imaxpct=PCT
+         = sunit=XXX swidth=XXX, unwritten=X
+naming   =VERN bsize=XXX
+log      =LDEV bsize=XXX blocks=XXX
+realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX
+Phase 1 - find and verify superblock...
+bad primary superblock - bad magic number !!!
+
+attempting to find secondary superblock...
+found candidate secondary superblock...
+verified secondary superblock...
+writing modified primary superblock
+sb root inode value INO inconsistent with calculated value INO
+resetting superblock root inode pointer to INO
+sb realtime bitmap inode INO inconsistent with calculated value INO
+resetting superblock realtime bitmap ino pointer to INO
+sb realtime summary inode INO inconsistent with calculated value INO
+resetting superblock realtime summary ino pointer to INO
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+        - found root inode chunk
+Phase 3 - for each AG...
+        - scan and clear agi unlinked lists...
+        - process known inodes and perform inode discovery...
+        - process newly discovered inodes...
+Phase 4 - check for duplicate blocks...
+        - setting up duplicate extent list...
+        - check for inodes claiming duplicate blocks...
+Phase 5 - rebuild AG headers and trees...
+        - reset superblock...
+Phase 6 - check inode connectivity...
+        - resetting contents of realtime bitmap and summary inodes
+        - traversing filesystem ...
+        - traversal finished ...
+        - moving disconnected inodes to lost+found ...
+Phase 7 - verify and correct link counts...
+Note - stripe unit (0) and width (0) fields have been reset.
+Please set with mount -o sunit=<value>,swidth=<value>
+done
+repair passed
+Phase 1 - find and verify superblock...
+bad primary superblock - bad magic number !!!
+
+attempting to find secondary superblock...
+found candidate secondary superblock...
+verified secondary superblock...
+writing modified primary superblock
+sb root inode value INO inconsistent with calculated value INO
+resetting superblock root inode pointer to INO
+sb realtime bitmap inode INO inconsistent with calculated value INO
+resetting superblock realtime bitmap ino pointer to INO
+sb realtime summary inode INO inconsistent with calculated value INO
+resetting superblock realtime summary ino pointer to INO
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+        - found root inode chunk
+Phase 3 - for each AG...
+        - scan and clear agi unlinked lists...
+        - process known inodes and perform inode discovery...
+        - process newly discovered inodes...
+Phase 4 - check for duplicate blocks...
+        - setting up duplicate extent list...
+        - check for inodes claiming duplicate blocks...
+Phase 5 - rebuild AG headers and trees...
+        - reset superblock...
+Phase 6 - check inode connectivity...
+        - resetting contents of realtime bitmap and summary inodes
+        - traversing filesystem ...
+        - traversal finished ...
+        - moving disconnected inodes to lost+found ...
+Phase 7 - verify and correct link counts...
+Note - stripe unit (0) and width (0) fields have been reset.
+Please set with mount -o sunit=<value>,swidth=<value>
+done
+repair passed
index 5cd982e436b96d7873a8b3a9fb9159f193c3d315..0c3f41d95ad7144b0c926bb2564cb5b13852f0fa 100644 (file)
@@ -124,6 +124,9 @@ _filter_mkfs()
        print STDERR "ddev=$1\nisize=$2\nagcount=$3\nagsize=$4\n";
        print STDOUT "meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks\n";
     }
+    if (/^\s+=\s+sectsz=(\d+)\s+attr=(\d+)/) {
+        print STDERR "sectsz=$1\nattr=$2\n";
+    }
     if (/^data\s+=\s+bsize=(\d+)\s+blocks=(\d+), imaxpct=(\d+)/) {
        print STDERR "dbsize=$1\ndblocks=$2\nimaxpct=$3\n";
        print STDOUT "data     = bsize=XXX blocks=XXX, imaxpct=PCT\n";
diff --git a/group b/group
index c8f3eb4e49cbdd1356f035d1b9ed917433dc69d6..e195cb615eb2774647f8231365688bfc3a71a9e8 100644 (file)
--- a/group
+++ b/group
@@ -263,3 +263,4 @@ filestreams dgc@sgi.com
 173 rw filestreams auto
 174 rw filestreams auto
 177 rw other auto
+178 mkfs other auto