Hi all, This series hoists inode creation, renaming, and deletion operations to libxfs in anticipation of the metadata inode directory feature, which maintains a directory tree of metadata inodes. This will be necessary for further enhancements to the realtime feature, subvolume support. There aren't supposed to be any functional changes in this intense refactoring -- we just split the functions into pieces that are generic and pieces that are specific to libxfs clients. As a bonus, we can remove various open-coded pieces of mkfs.xfs and xfs_repair when this series gets to xfsprogs. 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=inode-refactor xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=inode-refactor --- fs/xfs/Makefile | 1 fs/xfs/libxfs/xfs_bmap.c | 42 + fs/xfs/libxfs/xfs_bmap.h | 3 fs/xfs/libxfs/xfs_dir2.c | 636 +++++++++++++++++ fs/xfs/libxfs/xfs_dir2.h | 48 + fs/xfs/libxfs/xfs_ialloc.c | 15 fs/xfs/libxfs/xfs_inode_util.c | 723 +++++++++++++++++++ fs/xfs/libxfs/xfs_inode_util.h | 71 ++ fs/xfs/libxfs/xfs_shared.h | 7 fs/xfs/libxfs/xfs_trans_inode.c | 2 fs/xfs/scrub/common.c | 1 fs/xfs/scrub/tempfile.c | 20 - fs/xfs/xfs_inode.c | 1486 +++++---------------------------------- fs/xfs/xfs_inode.h | 75 +- fs/xfs/xfs_ioctl.c | 60 -- fs/xfs/xfs_iops.c | 47 + fs/xfs/xfs_linux.h | 2 fs/xfs/xfs_qm.c | 9 fs/xfs/xfs_reflink.h | 10 fs/xfs/xfs_symlink.c | 63 +- fs/xfs/xfs_trans.h | 1 21 files changed, 1830 insertions(+), 1492 deletions(-) create mode 100644 fs/xfs/libxfs/xfs_inode_util.c create mode 100644 fs/xfs/libxfs/xfs_inode_util.h