From: David Disseldorp Date: Wed, 20 Dec 2006 05:10:17 +0000 (+0000) Subject: test 030 clone using xfs_prepair64 X-Git-Tag: v1.1.0~544 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9682e5c201588e79c316bffefedc9af5553588e7;p=xfstests-dev.git test 030 clone using xfs_prepair64 Merge of master-melb:xfs-cmds:27780a by kenmcd. test 030 clone using xfs_prepair64 --- diff --git a/148 b/148 new file mode 100755 index 00000000..79a5a6a8 --- /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 index 00000000..8136da6d --- /dev/null +++ b/148.out.irix @@ -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 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=,swidth= +done +Corrupting agf 0 - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using 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 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 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 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=,swidth= +done +Corrupting agf 0 - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using 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 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 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 index 00000000..117459cf --- /dev/null +++ b/148.out.linux @@ -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 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=,swidth= +done +Corrupting agf 0 - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using 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 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 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 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=,swidth= +done +Corrupting agf 0 - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using 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 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 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