Hi all, Replace all the open-coded locking of realtime metadata inodes with a single rtlock function that can lock all the pieces that the caller wants in a single call. This will be important for maintaining correct locking order later when we start adding more realtime metadata inodes. 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=refactor-rt-locking xfsprogs git tree: https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=refactor-rt-locking --- fs/xfs/libxfs/xfs_bmap.c | 7 +--- fs/xfs/libxfs/xfs_rtbitmap.c | 57 ++++++++++++++++++++++++++++++++++ fs/xfs/libxfs/xfs_rtbitmap.h | 17 ++++++++++ fs/xfs/scrub/bmap.c | 2 + fs/xfs/scrub/common.c | 70 ++++++++++++++++++++++++++++++++++++++++++ fs/xfs/scrub/common.h | 18 +++++++++++ fs/xfs/scrub/fscounters.c | 4 +- fs/xfs/scrub/rtbitmap.c | 7 +--- fs/xfs/scrub/rtsummary.c | 12 ++----- fs/xfs/scrub/scrub.c | 1 + fs/xfs/scrub/scrub.h | 9 +++++ fs/xfs/xfs_bmap_util.c | 5 +-- fs/xfs/xfs_fsmap.c | 4 +- fs/xfs/xfs_inode.c | 3 +- fs/xfs/xfs_inode.h | 13 ++------ fs/xfs/xfs_rtalloc.c | 62 ++++++++++++++++++++++++++----------- 16 files changed, 235 insertions(+), 56 deletions(-)