Hi all, This series prepares the btree code to support realtime reverse mapping btrees by refactoring xfs_ifork_realloc to be fed a per-btree ops structure so that it can handle multiple types of inode-rooted btrees. It moves on to refactoring the btree code to use the new realloc routines and to support storing btree rcords in the inode root, because the current bmbt code does not support this. 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 kernel git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=btree-ifork-records xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=btree-ifork-records --- fs/xfs/libxfs/xfs_alloc_btree.c | 6 - fs/xfs/libxfs/xfs_alloc_btree.h | 3 fs/xfs/libxfs/xfs_attr_leaf.c | 8 - fs/xfs/libxfs/xfs_bmap.c | 60 ++---- fs/xfs/libxfs/xfs_bmap_btree.c | 94 ++++++++- fs/xfs/libxfs/xfs_bmap_btree.h | 219 +++++++++++++++------ fs/xfs/libxfs/xfs_btree.c | 382 ++++++++++++++++++++++++++++-------- fs/xfs/libxfs/xfs_btree.h | 4 fs/xfs/libxfs/xfs_btree_staging.c | 4 fs/xfs/libxfs/xfs_ialloc.c | 4 fs/xfs/libxfs/xfs_ialloc_btree.c | 6 - fs/xfs/libxfs/xfs_ialloc_btree.h | 3 fs/xfs/libxfs/xfs_inode_fork.c | 168 +++++++--------- fs/xfs/libxfs/xfs_inode_fork.h | 27 ++- fs/xfs/libxfs/xfs_refcount_btree.c | 5 fs/xfs/libxfs/xfs_refcount_btree.h | 3 fs/xfs/libxfs/xfs_rmap_btree.c | 7 - fs/xfs/libxfs/xfs_rmap_btree.h | 3 fs/xfs/libxfs/xfs_sb.c | 16 +- fs/xfs/libxfs/xfs_trans_resv.c | 2 fs/xfs/scrub/bmap_repair.c | 4 fs/xfs/scrub/inode_repair.c | 2 fs/xfs/xfs_xchgrange.c | 4 23 files changed, 705 insertions(+), 329 deletions(-)