mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
d95ecb0354
The finobt creates a duplicate subset of inode allocation metadata from the inobt. xfs_repair should detect and repair inconsistencies in the finobt that could be caused by bugs or corruption. This test uses xfs_db to cause targeted corruptions in the finobt and verify repair detects and corrects the filesystem. In particular, the test corrupts individual finobt records to cause inconsistency between the inode allocation count fields as well as causing the finobt to contain a record with no free inodes. Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
58 lines
2.2 KiB
Plaintext
58 lines
2.2 KiB
Plaintext
QA output created by 010
|
|
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
|
|
recs[1].freecount = 70
|
|
recs[2].freecount = 0
|
|
recs[2].free = 0
|
|
Phase 1 - find and verify superblock...
|
|
Phase 2 - using <TYPEOF> log
|
|
- zero log...
|
|
- scan filesystem freespace and inode maps...
|
|
finobt ir_freecount/free mismatch, AGNO/INO, freecount 70 nfree 2
|
|
finobt record with no free inodes, AGNO/INO
|
|
- 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...
|
|
done
|
|
free_root = 0
|
|
free_level = 0
|
|
Phase 1 - find and verify superblock...
|
|
Phase 2 - using <TYPEOF> log
|
|
- zero log...
|
|
- scan filesystem freespace and inode maps...
|
|
bad agbno AGBNO for finobt 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...
|
|
- 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...
|
|
done
|