Yes, same results if I run in “no modify” mode.
I’m going to wait and see what response I receive from the bug report before doing any more testing. I’m fairly sure that XFS is working properly, I can plug the exact same disk that I get errors on my system into my laptop and xfs_repair runs clean, so there is some reason I’m getting false positives. I did also check and bugs have been reported against xfs_repair, and I also found one bug that concerned false positives, so this isn’t anything new or unique. Apparently, it happens.
Below shows the same drive first on my workstation, then moments later on my laptop.
Here is the result of the “no modify”:
xfs_repair -n /dev/sdh
Phase 1 - find and verify superblock…
Phase 2 - using internal log
- zero log…
- scan filesystem freespace and inode maps…
- found root inode chunk
Phase 3 - for each AG…
- scan (but don’t clear) agi unlinked lists…
- process known inodes and perform inode discovery…
- agno = 0
- agno = 1
inode identifier 2147862912 mismatch on inode 2147869056
inode identifier 2147862913 mismatch on inode 2147869057
inode identifier 2147862912 mismatch on inode 2147869056
would have cleared inode 2147869056
inode identifier 2147862913 mismatch on inode 2147869057
would have cleared inode 2147869057
- agno = 2
inode identifier 4295556032 mismatch on inode 4295565184
inode identifier 4295556033 mismatch on inode 4295565185
inode identifier 4295556032 mismatch on inode 4295565184
would have cleared inode 4295565184
inode identifier 4295556033 mismatch on inode 4295565185
would have cleared inode 4295565185
inode identifier 4304975936 mismatch on inode 4305117696
inode identifier 4304975937 mismatch on inode 4305117697
inode identifier 4304975936 mismatch on inode 4305117696
would have cleared inode 4305117696
inode identifier 4304975937 mismatch on inode 4305117697
would have cleared inode 4305117697
- agno = 3
inode identifier 6453851908 mismatch on inode 6453931524
inode identifier 6453851909 mismatch on inode 6453931525
inode identifier 6453851908 mismatch on inode 6453931524
would have cleared inode 6453931524
inode identifier 6453851909 mismatch on inode 6453931525
would have cleared inode 6453931525
- agno = 4
- agno = 5
- agno = 6
inode identifier 12885557312 mismatch on inode 12885563840
inode identifier 12885557313 mismatch on inode 12885563841
inode identifier 12885557312 mismatch on inode 12885563840
would have cleared inode 12885563840
inode identifier 12885557313 mismatch on inode 12885563841
would have cleared inode 12885563841
- agno = 7
- process newly discovered inodes…
Phase 4 - check for duplicate blocks…
- setting up duplicate extent list…
- check for inodes claiming duplicate blocks…
- agno = 0
- agno = 4
- agno = 1
- agno = 7
- agno = 6
- agno = 3
- agno = 2
- agno = 5
entry “background-43.jpg” at block 1 offset 96 in directory inode 2147622656 references free inode 2147869056
would clear inode number in entry at offset 96…
entry “04_last_night.opus” at block 0 offset 200 in directory inode 2147864530 references free inode 2147869057
would clear inode number in entry at offset 200…
inode identifier 2147862912 mismatch on inode 2147869056
would have cleared inode 2147869056
inode identifier 2147862913 mismatch on inode 2147869057
would have cleared inode 2147869057
inode identifier 4295556032 mismatch on inode 4295565184
would have cleared inode 4295565184
inode identifier 4295556033 mismatch on inode 4295565185
would have cleared inode 4295565185
inode identifier 12885557312 mismatch on inode 12885563840
would have cleared inode 12885563840
inode identifier 12885557313 mismatch on inode 12885563841
would have cleared inode 12885563841
entry “test 4” at block 24 offset 3368 in directory inode 4304567810 references free inode 4305117696
would clear inode number in entry at offset 3368…
entry “test 3” at block 24 offset 3576 in directory inode 4304567810 references free inode 4305117697
would clear inode number in entry at offset 3576…
inode identifier 4304975936 mismatch on inode 4305117696
would have cleared inode 4305117696
inode identifier 4304975937 mismatch on inode 4305117697
would have cleared inode 4305117697
inode identifier 6453851908 mismatch on inode 6453931524
would have cleared inode 6453931524
inode identifier 6453851909 mismatch on inode 6453931525
would have cleared inode 6453931525
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity…
- traversing filesystem …
Metadata CRC error detected at 0x55f6d4375b70, xfs_dir3_block block 0x347e8/0x1000
expected owner inode 152592, got 146784, directory block 215016
would rebuild directory inode 152592
would create missing “.” entry in dir ino 152592
entry “background-43.jpg” in directory inode 2147622656 points to free inode 2147869056, would junk entry
bad hash table for directory inode 2147622656 (no data entry): would rebuild
would rebuild directory inode 2147622656
entry “04_last_night.opus” in directory inode 2147864530 points to free inode 2147869057, would junk entry
bad hash table for directory inode 2147864530 (no data entry): would rebuild
would rebuild directory inode 2147864530
entry “test” in directory inode 4304567810 points to free inode 4305117696, would junk entry
entry “test2” in directory inode 4304567810 points to free inode 4305117697, would junk entry
would rebuild directory inode 4304567810
Metadata CRC error detected at 0x55f6d4377460, xfs_dir3_leaf1 block 0x284019d48/0x1000
leaf block 8388608 for directory inode 10737498380 bad CRC
would rebuild directory inode 10737498380
- traversal finished …
- moving disconnected inodes to lost+found …
disconnected inode 751929, would move to lost+found
disconnected inode 751930, would move to lost+found
disconnected inode 751931, would move to lost+found
disconnected inode 751932, would move to lost+found
disconnected inode 751933, would move to lost+found
disconnected inode 751934, would move to lost+found
disconnected inode 751935, would move to lost+found
disconnected inode 753609, would move to lost+found
disconnected inode 753610, would move to lost+found
disconnected inode 753620, would move to lost+found
disconnected inode 753625, would move to lost+found
disconnected inode 753643, would move to lost+found
disconnected inode 753648, would move to lost+found
disconnected inode 754051, would move to lost+found
disconnected inode 754053, would move to lost+found
disconnected inode 754057, would move to lost+found
disconnected inode 754069, would move to lost+found
disconnected inode 754074, would move to lost+found
disconnected inode 754080, would move to lost+found
disconnected inode 754084, would move to lost+found
disconnected inode 754088, would move to lost+found
disconnected inode 754096, would move to lost+found
disconnected inode 754099, would move to lost+found
disconnected inode 754101, would move to lost+found
disconnected inode 754111, would move to lost+found
disconnected inode 755780, would move to lost+found
disconnected inode 755784, would move to lost+found
disconnected inode 755788, would move to lost+found
disconnected inode 755795, would move to lost+found
disconnected inode 755802, would move to lost+found
disconnected inode 755807, would move to lost+found
disconnected inode 755809, would move to lost+found
disconnected inode 755810, would move to lost+found
disconnected inode 755813, would move to lost+found
disconnected inode 755819, would move to lost+found
disconnected inode 755829, would move to lost+found
disconnected inode 755836, would move to lost+found
disconnected inode 755837, would move to lost+found
disconnected inode 757826, would move to lost+found
disconnected inode 757827, would move to lost+found
disconnected inode 757836, would move to lost+found
disconnected inode 757840, would move to lost+found
disconnected inode 757842, would move to lost+found
disconnected inode 757846, would move to lost+found
disconnected inode 757851, would move to lost+found
disconnected inode 757862, would move to lost+found
disconnected inode 757868, would move to lost+found
disconnected inode 757877, would move to lost+found
disconnected inode 757880, would move to lost+found
disconnected inode 757883, would move to lost+found
disconnected inode 757887, would move to lost+found
disconnected inode 759107, would move to lost+found
disconnected inode 759111, would move to lost+found
disconnected inode 759118, would move to lost+found
disconnected inode 759120, would move to lost+found
disconnected inode 759129, would move to lost+found
disconnected inode 759130, would move to lost+found
disconnected inode 759134, would move to lost+found
disconnected inode 759140, would move to lost+found
disconnected inode 759147, would move to lost+found
disconnected inode 759151, would move to lost+found
disconnected inode 759155, would move to lost+found
disconnected inode 759162, would move to lost+found
disconnected inode 759164, would move to lost+found
disconnected inode 760000, would move to lost+found
disconnected inode 760004, would move to lost+found
disconnected inode 760007, would move to lost+found
disconnected inode 760022, would move to lost+found
disconnected inode 760031, would move to lost+found
disconnected inode 760033, would move to lost+found
disconnected inode 760034, would move to lost+found
disconnected inode 760056, would move to lost+found
disconnected inode 4305583518, would move to lost+found
disconnected inode 4305583519, would move to lost+found
disconnected inode 4305583520, would move to lost+found
disconnected inode 4305583521, would move to lost+found
disconnected inode 4305583522, would move to lost+found
disconnected inode 4305583523, would move to lost+found
Phase 7 - verify link counts…
would have reset inode 4304567810 nlinks from 6708 to 6706
No modify flag set, skipping filesystem flush and exiting.
And here is the same drive a few moments later with xfs_repair on my laptop:
xfs_repair /dev/sdb
Phase 1 - find and verify superblock…
Phase 2 - using internal 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…
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- agno = 6
- agno = 7
- process newly discovered inodes…
Phase 4 - check for duplicate blocks…
- setting up duplicate extent list…
- check for inodes claiming duplicate blocks…
- agno = 0
- agno = 1
- agno = 2
- agno = 3
- agno = 4
- agno = 5
- agno = 6
- agno = 7
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