Hi all, Backport libxfs changes for 5.15. The xfs_buf changes and the reworking of the function predicates made things kind of messy, so I'm sending my version of this to the list for evaluation so that Eric doesn't have to stumble around wondering what I was smoking... ;) 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=libxfs-5.15-sync --- copy/xfs_copy.c | 34 +++--- db/attrset.c | 4 - db/btblock.c | 2 db/btdump.c | 4 - db/check.c | 20 ++- db/crc.c | 2 db/frag.c | 2 db/fsmap.c | 10 +- db/fuzz.c | 4 - db/info.c | 2 db/init.c | 6 - db/inode.c | 6 - db/io.c | 4 - db/logformat.c | 4 - db/metadump.c | 24 ++-- db/namei.c | 2 db/sb.c | 82 +++++++------ db/timelimit.c | 2 db/write.c | 4 - include/kmem.h | 3 include/libxfs.h | 56 +++++++++ include/xfs_arch.h | 10 +- include/xfs_mount.h | 138 ++++++++++++++++++++++- include/xfs_trace.h | 6 + libxfs/init.c | 49 ++++---- libxfs/kmem.c | 6 + libxfs/libxfs_api_defs.h | 1 libxfs/libxfs_io.h | 19 +++ libxfs/libxfs_priv.h | 23 +--- libxfs/logitem.c | 4 - libxfs/rdwr.c | 26 ++-- libxfs/util.c | 14 +- libxfs/xfs_ag.c | 25 ++-- libxfs/xfs_alloc.c | 56 +++++---- libxfs/xfs_alloc.h | 12 +- libxfs/xfs_alloc_btree.c | 100 ++++++++-------- libxfs/xfs_alloc_btree.h | 2 libxfs/xfs_attr.c | 56 +++++++-- libxfs/xfs_attr.h | 1 libxfs/xfs_attr_leaf.c | 55 +++++---- libxfs/xfs_attr_remote.c | 21 ++- libxfs/xfs_attr_remote.h | 2 libxfs/xfs_bmap.c | 38 +++--- libxfs/xfs_bmap_btree.c | 56 +++++---- libxfs/xfs_bmap_btree.h | 9 + libxfs/xfs_btree.c | 141 ++++++++++++----------- libxfs/xfs_btree.h | 56 +++++---- libxfs/xfs_btree_staging.c | 14 +- libxfs/xfs_da_btree.c | 18 +-- libxfs/xfs_da_format.h | 2 libxfs/xfs_dir2.c | 6 - libxfs/xfs_dir2_block.c | 14 +- libxfs/xfs_dir2_data.c | 20 ++- libxfs/xfs_dir2_leaf.c | 14 +- libxfs/xfs_dir2_node.c | 20 ++- libxfs/xfs_dir2_priv.h | 2 libxfs/xfs_dir2_sf.c | 12 +- libxfs/xfs_dquot_buf.c | 8 + libxfs/xfs_format.h | 224 +++---------------------------------- libxfs/xfs_ialloc.c | 67 +++++------ libxfs/xfs_ialloc.h | 3 libxfs/xfs_ialloc_btree.c | 88 +++++++------- libxfs/xfs_ialloc_btree.h | 2 libxfs/xfs_inode_buf.c | 22 ++-- libxfs/xfs_inode_buf.h | 11 ++ libxfs/xfs_log_format.h | 6 - libxfs/xfs_log_rlimit.c | 2 libxfs/xfs_quota_defs.h | 30 +---- libxfs/xfs_refcount.c | 12 +- libxfs/xfs_refcount.h | 2 libxfs/xfs_refcount_btree.c | 54 ++++----- libxfs/xfs_rmap.c | 34 +++--- libxfs/xfs_rmap.h | 11 +- libxfs/xfs_rmap_btree.c | 72 ++++++------ libxfs/xfs_rtbitmap.c | 14 +- libxfs/xfs_sb.c | 263 +++++++++++++++++++++++++++++++------------ libxfs/xfs_sb.h | 4 - libxfs/xfs_symlink_remote.c | 14 +- libxfs/xfs_trans_inode.c | 2 libxfs/xfs_trans_resv.c | 48 +------- libxfs/xfs_trans_resv.h | 2 libxfs/xfs_trans_space.h | 6 - libxfs/xfs_types.c | 2 libxfs/xfs_types.h | 5 + libxlog/util.c | 6 - libxlog/xfs_log_recover.c | 17 +-- logprint/logprint.c | 3 mkfs/xfs_mkfs.c | 8 + repair/agbtree.c | 10 +- repair/agheader.c | 6 - repair/attr_repair.c | 10 +- repair/dino_chunks.c | 6 - repair/dinode.c | 26 ++-- repair/incore.h | 4 - repair/incore_ino.c | 2 repair/phase2.c | 21 ++- repair/phase4.c | 2 repair/phase5.c | 30 ++--- repair/phase6.c | 22 ++-- repair/prefetch.c | 22 ++-- repair/quotacheck.c | 4 - repair/rmap.c | 16 +-- repair/scan.c | 32 +++-- repair/versions.c | 87 +++++++------- repair/versions.h | 4 - repair/xfs_repair.c | 14 +- 106 files changed, 1406 insertions(+), 1279 deletions(-)