Hi folks, It turns out that yesterday's branch broke bisection, so I've push -f'd a work branch for all of our realtime cleanups and optimizations in the rtalloc-speedups-6.7 branch of the xfs-linux repository at: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git I started by rebasing last week's rt cleanups patchsets against 6.6-rc6 TOT instead of djwong-dev, then I added Dave's xfs_rtalloc_args cleanup, and then added Omar's rt allocator speedups. This branch has now survived overnight testing. The new head of the rtalloc-speedups-6.7 branch is commit: b67199695696 xfs: don't look for end of extent further than necessary in xfs_rtallocate_extent_near() 36 new commits: Darrick J. Wong (28): [6953ad8d0bae] xfs: make xchk_iget safer in the presence of corrupt inode btrees [1948e87e4723] xfs: bump max fsgeom struct version [c0f654f9e230] xfs: hoist freeing of rt data fork extent mappings [03cc2dc5552c] xfs: prevent rt growfs when quota is enabled [b9a1d7039b5b] xfs: rt stubs should return negative errnos when rt disabled [2f21b6b1abff] xfs: fix units conversion error in xfs_bmap_del_extent_delay [003e9f00c1bb] xfs: make sure maxlen is still congruent with prod when rounding down [869a7bb10764] xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h [6e8471604ee5] xfs: convert xfs_extlen_t to xfs_rtxlen_t in the rt allocator [1e98fe26bd18] xfs: convert rt bitmap/summary block numbers to xfs_fileoff_t [fab6068dbd4c] xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t [b5b1ec2011f7] xfs: rename xfs_verify_rtext to xfs_verify_rtbext [efafd16f2dcb] xfs: convert rt extent numbers to xfs_rtxnum_t [e902ec670453] xfs: create a helper to convert rtextents to rtblocks [d0069a4dc6bb] xfs: create a helper to compute leftovers of realtime extents [c317ec75fe0d] xfs: create a helper to convert extlen to rtextlen [316da55c7ecf] xfs: create helpers to convert rt block numbers to rt extent numbers [0e90edd13659] xfs: convert do_div calls to xfs_rtb_to_rtx helper calls [2d4cf0892cfe] xfs: create rt extent rounding helpers for realtime extent blocks [f538cf95a5b8] xfs: use shifting and masking when converting rt extents, if possible [e780da4b8067] xfs: convert the rtbitmap block and bit macros to static inline functions [710a06e09cfe] xfs: remove XFS_BLOCKWSIZE and XFS_BLOCKWMASK macros [a705854970f8] xfs: convert open-coded xfs_rtword_t pointer accesses to helper [4cecf034d685] xfs: convert rt summary macros to helpers [4d9e06b25a33] xfs: create helpers for rtbitmap block/wordcount computations [625af2f8cf01] xfs: use accessor functions for bitmap words [c7078ff43a80] xfs: create helpers for rtsummary block/wordcount computations [ac9c57723b70] xfs: use accessor functions for summary info words Dave Chinner (1): [98ab1a255b81] xfs: consolidate realtime allocation arguments Omar Sandoval (6): [947d029f1677] xfs: cache last bitmap block in realtime allocator [36cb8887dc72] xfs: invert the realtime summary cache [c6bebaf43313] xfs: return maximum free size from xfs_rtany_summary() [ff31bbc39fb6] xfs: limit maxlen based on available space in xfs_rtallocate_extent_near() [90127b4188e3] xfs: don't try redundant allocations in xfs_rtallocate_extent_near() [b67199695696] xfs: don't look for end of extent further than necessary in xfs_rtallocate_extent_near() Shiyang Ruan (1): [1937b0813e81] mm, pmem, xfs: Introduce MF_MEM_PRE_REMOVE for unbind Code Diffstat: drivers/dax/super.c | 3 +- fs/xfs/libxfs/xfs_bmap.c | 45 +-- fs/xfs/libxfs/xfs_format.h | 34 +- fs/xfs/libxfs/xfs_rtbitmap.c | 733 +++++++++++++++++++++++++---------------- fs/xfs/libxfs/xfs_rtbitmap.h | 326 ++++++++++++++++++ fs/xfs/libxfs/xfs_sb.c | 2 + fs/xfs/libxfs/xfs_sb.h | 2 +- fs/xfs/libxfs/xfs_trans_resv.c | 10 +- fs/xfs/libxfs/xfs_types.c | 4 +- fs/xfs/libxfs/xfs_types.h | 10 +- fs/xfs/scrub/bmap.c | 2 +- fs/xfs/scrub/common.c | 6 +- fs/xfs/scrub/common.h | 19 ++ fs/xfs/scrub/fscounters.c | 2 +- fs/xfs/scrub/inode.c | 7 +- fs/xfs/scrub/rtbitmap.c | 28 +- fs/xfs/scrub/rtsummary.c | 57 ++-- fs/xfs/scrub/trace.c | 1 + fs/xfs/scrub/trace.h | 9 +- fs/xfs/xfs_bmap_util.c | 50 ++- fs/xfs/xfs_fsmap.c | 15 +- fs/xfs/xfs_inode_item.c | 3 +- fs/xfs/xfs_ioctl.c | 5 +- fs/xfs/xfs_linux.h | 12 + fs/xfs/xfs_mount.h | 8 +- fs/xfs/xfs_notify_failure.c | 108 +++++- fs/xfs/xfs_ondisk.h | 4 + fs/xfs/xfs_rtalloc.c | 602 +++++++++++++++++---------------- fs/xfs/xfs_rtalloc.h | 94 +----- fs/xfs/xfs_super.c | 3 +- fs/xfs/xfs_trans.c | 7 +- include/linux/mm.h | 1 + mm/memory-failure.c | 21 +- 33 files changed, 1391 insertions(+), 842 deletions(-) create mode 100644 fs/xfs/libxfs/xfs_rtbitmap.h