test 030 clone using xfs_prepair64
authorDavid Disseldorp <ddiss@sgi.com>
Wed, 20 Dec 2006 05:10:17 +0000 (05:10 +0000)
committerDavid Disseldorp <ddiss@sgi.com>
Wed, 20 Dec 2006 05:10:17 +0000 (05:10 +0000)
Merge of master-melb:xfs-cmds:27780a by kenmcd.

  test 030 clone using xfs_prepair64

148 [new file with mode: 0755]
148.out.irix [new file with mode: 0755]
148.out.linux [new file with mode: 0644]

diff --git a/148 b/148
new file mode 100755 (executable)
index 0000000..79a5a6a
--- /dev/null
+++ b/148
@@ -0,0 +1,100 @@
+#! /bin/sh
+# FS QA Test No. 148
+#
+# Exercise xfs parallel repair on broken filesystems
+# This is a clone of test 030 useing xfs_prepair64 instead of xfs_repair
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2000-2002 Silicon Graphics, Inc.  All Rights Reserved.
+#-----------------------------------------------------------------------
+#
+# creator
+owner=ddiss@sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1       # failure is the default!
+
+_cleanup()
+{
+       cd /
+       umount $SCRATCH_DEV 2>/dev/null
+       rm -f $tmp.*
+}
+
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+. ./common.repair
+
+[ -x $XFS_PARALLEL_REPAIR64_PROG ] || _notrun "parallel repair binary xfs_prepair64 is not installed"
+
+# force use of parallel repair
+export XFS_REPAIR_PROG=$XFS_PARALLEL_REPAIR64_PROG
+
+# link correct .out file
+_link_out_file $seq.out
+
+# nuke the superblock, AGI, AGF, AGFL; then try repair the damage
+# 
+_check_ag()
+{
+       for structure in 'sb 0' 'agf 0' 'agi 0' 'agfl 0'
+       do
+               echo "Corrupting $structure - setting bits to $1"
+               _check_repair $1 "$structure"
+       done
+}
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os IRIX Linux
+
+_require_nobigloopfs
+_require_scratch
+
+DSIZE="-dsize=100m"
+
+# first we need to ensure there are no bogus secondary
+# superblocks between the primary and first secondary
+# superblock (hanging around from earlier tests)...
+#
+
+_scratch_mkfs_xfs $DSIZE >/dev/null 2>&1
+if [ $? -ne 0 ]                # probably don't have a big enough scratch
+then
+       _notrun "SCRATCH_DEV too small, results would be non-deterministic"
+else
+       _scratch_mount
+       src/feature -U $SCRATCH_DEV && \
+               _notrun "UQuota are enabled, test needs controlled sb recovery"
+       src/feature -G $SCRATCH_DEV && \
+               _notrun "GQuota are enabled, test needs controlled sb recovery"
+       src/feature -P $SCRATCH_DEV && \
+               _notrun "PQuota are enabled, test needs controlled sb recovery"
+       umount $SCRATCH_DEV
+fi
+clear=""
+eval `xfs_db -r -c "sb 1" -c stack $SCRATCH_DEV | perl -ne '
+       if (/byte offset (\d+), length (\d+)/) {
+               print "clear=", $1 / 512, "\n"; exit
+       }'`
+[ -z "$clear" ] && echo "Cannot calculate length to clear"
+src/devzero -v -1 -n "$clear" $SCRATCH_DEV >/dev/null
+
+# now kick off the real prepair test...
+#
+_scratch_mkfs_xfs $DSIZE | _filter_mkfs 2>$tmp.mkfs
+. $tmp.mkfs
+_check_ag 0
+_check_ag -1
+
+
+# success, all done
+status=0
+exit
diff --git a/148.out.irix b/148.out.irix
new file mode 100755 (executable)
index 0000000..8136da6
--- /dev/null
@@ -0,0 +1,296 @@
+QA output created by 148
+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
+Corrupting sb 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+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...
+XFS: totally zeroed 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...
+        - clear lost+found (if it exists) ...
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals 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
+Corrupting agf 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0x0 for agf 0
+bad version # 0 for agf 0
+bad length 0 for agf 0, should be LENGTH
+reset bad agf for ag 0
+bad agbno AGBNO for btbno root, agno 0
+bad agbno AGBNO for btbcnt root, agno 0
+        - 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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agi 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0x0 for agi 0
+bad version # 0 for agi 0
+bad length # 0 for agi 0, should be LENGTH
+reset bad agi for ag 0
+bad agbno AGBNO for inobt root, agno 0
+root inode chunk not found
+Phase 3 - for each AG...
+        - scan and clear agi unlinked lists...
+error following ag 0 unlinked list
+        - process known inodes and perform inode discovery...
+imap claims in-use inode INO is free, correcting imap
+        - process newly discovered inodes...
+Phase 4 - check for duplicate blocks...
+        - setting up duplicate extent list...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agfl 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+Phase 1 - find and verify superblock...
+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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting sb 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals 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
+Corrupting agf 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0xffffffff for agf 0
+bad version # -1 for agf 0
+bad sequence # -1 for agf 0
+bad length -1 for agf 0, should be LENGTH
+flfirst -1 in agf 0 too large (max = MAX)
+fllast -1 in agf 0 too large (max = MAX)
+reset bad agf for ag 0
+freeblk count 1 != flcount -1 in ag 0
+bad agbno AGBNO for btbno root, agno 0
+bad agbno AGBNO for btbcnt root, agno 0
+        - 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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agi 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0xffffffff for agi 0
+bad version # -1 for agi 0
+bad sequence # -1 for agi 0
+bad length # -1 for agi 0, should be LENGTH
+reset bad agi for ag 0
+bad agbno AGBNO for inobt root, agno 0
+root inode chunk not found
+Phase 3 - for each AG...
+        - scan and clear agi unlinked lists...
+        - process known inodes and perform inode discovery...
+imap claims in-use inode INO is free, correcting imap
+        - process newly discovered inodes...
+Phase 4 - check for duplicate blocks...
+        - setting up duplicate extent list...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agfl 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+Phase 1 - find and verify superblock...
+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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
diff --git a/148.out.linux b/148.out.linux
new file mode 100644 (file)
index 0000000..117459c
--- /dev/null
@@ -0,0 +1,295 @@
+QA output created by 148
+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
+Corrupting sb 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+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...
+        - clear lost+found (if it exists) ...
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals 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
+Corrupting agf 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0x0 for agf 0
+bad version # 0 for agf 0
+bad length 0 for agf 0, should be LENGTH
+reset bad agf for ag 0
+bad agbno AGBNO for btbno root, agno 0
+bad agbno AGBNO for btbcnt root, agno 0
+        - 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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agi 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0x0 for agi 0
+bad version # 0 for agi 0
+bad length # 0 for agi 0, should be LENGTH
+reset bad agi for ag 0
+bad agbno AGBNO for inobt root, agno 0
+root inode chunk not found
+Phase 3 - for each AG...
+        - scan and clear agi unlinked lists...
+error following ag 0 unlinked list
+        - process known inodes and perform inode discovery...
+imap claims in-use inode INO is free, correcting imap
+        - process newly discovered inodes...
+Phase 4 - check for duplicate blocks...
+        - setting up duplicate extent list...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agfl 0 - setting bits to 0
+Wrote X.XXKb (value 0x0)
+Phase 1 - find and verify superblock...
+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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting sb 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals 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
+Corrupting agf 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0xffffffff for agf 0
+bad version # -1 for agf 0
+bad sequence # -1 for agf 0
+bad length -1 for agf 0, should be LENGTH
+flfirst -1 in agf 0 too large (max = MAX)
+fllast -1 in agf 0 too large (max = MAX)
+reset bad agf for ag 0
+freeblk count 1 != flcount -1 in ag 0
+bad agbno AGBNO for btbno root, agno 0
+bad agbno AGBNO for btbcnt root, agno 0
+        - 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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agi 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+Phase 1 - find and verify superblock...
+Phase 2 - using <TYPEOF> log
+        - zero log...
+        - scan filesystem freespace and inode maps...
+bad magic # 0xffffffff for agi 0
+bad version # -1 for agi 0
+bad sequence # -1 for agi 0
+bad length # -1 for agi 0, should be LENGTH
+reset bad agi for ag 0
+bad agbno AGBNO for inobt root, agno 0
+root inode chunk not found
+Phase 3 - for each AG...
+        - scan and clear agi unlinked lists...
+        - process known inodes and perform inode discovery...
+imap claims in-use inode INO is free, correcting imap
+        - process newly discovered inodes...
+Phase 4 - check for duplicate blocks...
+        - setting up duplicate extent list...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done
+Corrupting agfl 0 - setting bits to -1
+Wrote X.XXKb (value 0xffffffff)
+Phase 1 - find and verify superblock...
+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...
+        - clear lost+found (if it exists) ...
+        - clearing existing "lost+found" inode
+        - deleting existing "lost+found" entry
+        - 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
+        - ensuring existence of lost+found directory
+        - traversing filesystem starting at / ... 
+        - traversal finished ... 
+        - traversing all unattached subtrees ... 
+        - traversals finished ... 
+        - moving disconnected inodes to lost+found ... 
+Phase 7 - verify and correct link counts...
+done