Hi Chandan, Please pull this branch with changes for xfs for 6.8-rc1. As usual, I did a test-merge with the main upstream branch as of a few minutes ago, and didn't see any conflicts. Please let me know if you encounter any problems. --D The following changes since commit e069d549705e49841247acf9b3176744e27d5425: xfs: constrain dirty buffers while formatting a staged btree (2023-12-15 10:03:29 -0800) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/repair-ag-btrees-6.8_2023-12-15 for you to fetch changes up to 9099cd38002f8029c9a1da08e6832d1cd18e8451: xfs: repair refcount btrees (2023-12-15 10:03:33 -0800) ---------------------------------------------------------------- xfs: online repair of AG btrees [v28.3] Now that we've spent a lot of time reworking common code in online fsck, we're ready to start rebuilding the AG space btrees. This series implements repair functions for the free space, inode, and refcount btrees. Rebuilding the reverse mapping btree is much more intense and is left for a subsequent patchset. The fstests counterpart of this patchset implements stress testing of repair. This has been running on the djcloud for months with no problems. Enjoy! Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> ---------------------------------------------------------------- Darrick J. Wong (7): xfs: create separate structures and code for u32 bitmaps xfs: move the per-AG datatype bitmaps to separate files xfs: roll the scrub transaction after completing a repair xfs: remove trivial bnobt/inobt scrub helpers xfs: repair free space btrees xfs: repair inode btrees xfs: repair refcount btrees fs/xfs/Makefile | 4 + fs/xfs/libxfs/xfs_ag.h | 10 + fs/xfs/libxfs/xfs_ag_resv.c | 2 + fs/xfs/libxfs/xfs_alloc.c | 10 +- fs/xfs/libxfs/xfs_alloc.h | 2 +- fs/xfs/libxfs/xfs_alloc_btree.c | 13 +- fs/xfs/libxfs/xfs_btree.c | 26 ++ fs/xfs/libxfs/xfs_btree.h | 2 + fs/xfs/libxfs/xfs_ialloc.c | 31 +- fs/xfs/libxfs/xfs_ialloc.h | 3 +- fs/xfs/libxfs/xfs_refcount.c | 8 +- fs/xfs/libxfs/xfs_refcount.h | 2 +- fs/xfs/libxfs/xfs_refcount_btree.c | 13 +- fs/xfs/libxfs/xfs_types.h | 7 + fs/xfs/scrub/agb_bitmap.c | 103 ++++ fs/xfs/scrub/agb_bitmap.h | 68 +++ fs/xfs/scrub/agheader_repair.c | 19 +- fs/xfs/scrub/alloc.c | 52 ++- fs/xfs/scrub/alloc_repair.c | 934 +++++++++++++++++++++++++++++++++++++ fs/xfs/scrub/bitmap.c | 509 +++++++++++++------- fs/xfs/scrub/bitmap.h | 111 ++--- fs/xfs/scrub/common.c | 1 + fs/xfs/scrub/common.h | 19 + fs/xfs/scrub/ialloc.c | 39 +- fs/xfs/scrub/ialloc_repair.c | 884 +++++++++++++++++++++++++++++++++++ fs/xfs/scrub/newbt.c | 48 +- fs/xfs/scrub/newbt.h | 3 + fs/xfs/scrub/reap.c | 6 +- fs/xfs/scrub/refcount.c | 2 +- fs/xfs/scrub/refcount_repair.c | 794 +++++++++++++++++++++++++++++++ fs/xfs/scrub/repair.c | 131 ++++++ fs/xfs/scrub/repair.h | 43 ++ fs/xfs/scrub/rmap.c | 1 + fs/xfs/scrub/scrub.c | 30 +- fs/xfs/scrub/scrub.h | 15 +- fs/xfs/scrub/trace.h | 112 +++-- fs/xfs/scrub/xfarray.h | 22 + fs/xfs/xfs_extent_busy.c | 13 + fs/xfs/xfs_extent_busy.h | 2 + 39 files changed, 3709 insertions(+), 385 deletions(-) create mode 100644 fs/xfs/scrub/agb_bitmap.c create mode 100644 fs/xfs/scrub/agb_bitmap.h create mode 100644 fs/xfs/scrub/alloc_repair.c create mode 100644 fs/xfs/scrub/ialloc_repair.c create mode 100644 fs/xfs/scrub/refcount_repair.c