Hi all, This series enhances the AGI scrub code to check the unlinked inode bucket lists for errors, and fixes them if necessary. Now that iunlink pointer updates are virtual log items, we can batch updates pretty efficiently in the logging code. If you're going to start using this code, I strongly recommend pulling from my git trees, which are linked below. This has been running on the djcloud for months with no problems. Enjoy! Comments and questions are, as always, welcome. --D kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=repair-iunlink xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=repair-iunlink --- Commits in this patchset: * xfs: check AGI unlinked inode buckets * xfs: hoist AGI repair context to a heap object * xfs: repair AGI unlinked inode bucket lists --- fs/xfs/scrub/agheader.c | 40 ++ fs/xfs/scrub/agheader_repair.c | 879 ++++++++++++++++++++++++++++++++++++++-- fs/xfs/scrub/agino_bitmap.h | 49 ++ fs/xfs/scrub/trace.h | 255 ++++++++++++ fs/xfs/xfs_inode.c | 2 fs/xfs/xfs_inode.h | 1 6 files changed, 1179 insertions(+), 47 deletions(-) create mode 100644 fs/xfs/scrub/agino_bitmap.h