Hi all, Now that we've ported support for in-memory btrees to userspace, port xfs_repair to use them instead of the clunky slab interface that we currently use. This has the effect of moving memory consumption for tracking reverse mappings into a memfd file, which means that we could (theoretically) reduce the memory requirements by pointing it at an on-disk file or something. It also enables us to remove the sorting step and to avoid having to coalesce adjacent contiguous bmap records into a single rmap record. If you're going to start using this mess, you probably ought to just pull from my git trees, which are linked below. This is an extraordinary way to destroy everything. Enjoy! Comments and questions are, as always, welcome. --D xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=repair-use-in-memory-btrees --- libxfs/libxfs_api_defs.h | 13 + libxfs/xfile.c | 169 ++++++++++ libxfs/xfile.h | 10 - repair/agbtree.c | 18 + repair/agbtree.h | 1 repair/dinode.c | 9 - repair/phase4.c | 25 -- repair/phase5.c | 2 repair/rmap.c | 754 ++++++++++++++++++++++++++++++---------------- repair/rmap.h | 32 +- repair/scan.c | 7 repair/slab.c | 49 ++- repair/slab.h | 2 repair/xfs_repair.c | 6 14 files changed, 754 insertions(+), 343 deletions(-)