Hi Linus, Please pull this branch with changes for XFS for 6.12-rc1. The pull request introduces new ioctls for exchanging contents of two files. The remaining changes are limited to fixes and cleanups. I did a test-merge with the main upstream branch as of a few minutes ago and didn't see any conflicts. Please let me know if you encounter any problems. Please note that in case you end up pulling contents of for-next branches of either https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git or https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git ... You might end up with compilation errors. The trivial patch at https://lore.kernel.org/linux-next/20240916093012.3a4dbb3f@xxxxxxxxxxxxxxxx/#r will resolve the issue. The following changes since commit 431c1646e1f86b949fa3685efc50b660a364c2b6: Linux 6.11-rc6 (2024-09-01 19:46:02 +1200) are available in the Git repository at: https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-6.12-merge-1 for you to fetch changes up to 90fa22da6d6b41dc17435aff7b800f9ca3c00401: xfs: ensure st_blocks never goes to zero during COW writes (2024-09-03 10:07:47 +0530) ---------------------------------------------------------------- New code for 6.12: * Introduce new ioctls to exchange contents of two files. The first ioctl does the preparation work to exchange the contents of two files while the second ioctl performs the actual exchange if the target file has not been changed since a given sampling point. * Fixes - Fix bugs associated with calculating the maximum range of realtime extents to scan for free space. - Copy keys instead of records when resizing the incore BMBT root block. - Do not report FITRIMming more bytes than possibly exist in the filesystem. - Modify xfs_fs.h to prevent C++ compilation errors. - Do not over eagerly free post-EOF speculative preallocation. - Ensure st_blocks never goes to zero during COW writes * Cleanups/refactors - Use Xarray to hold per-AG data instead of a Radix tree. - Cleanup the following functionality, - Realtime bitmap. - Inode allocator. - Quota. - Inode rooted btree code. Signed-off-by: Chandan Babu R <chandanbabu@xxxxxxxxxx> ---------------------------------------------------------------- Chandan Babu R (8): Merge tag 'atomic-file-commits-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'metadir-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'rtbitmap-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'rtalloc-fixes-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'rtalloc-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'quota-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'xfs-fixes-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Merge tag 'btree-cleanups-6.12_2024-09-02' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.12-mergeA Christoph Hellwig (37): xfs: remove xfs_validate_rtextents xfs: factor out a xfs_validate_rt_geometry helper xfs: make the RT rsum_cache mandatory xfs: use the recalculated transaction reservation in xfs_growfs_rt_bmblock xfs: clean up the ISVALID macro in xfs_bmap_adjacent xfs: remove the limit argument to xfs_rtfind_back xfs: ensure rtx mask/shift are correct after growfs xfs: factor out a xfs_rtallocate helper xfs: assert a valid limit in xfs_rtfind_forw xfs: rework the rtalloc fallback handling xfs: add bounds checking to xfs_rt{bitmap,summary}_read_buf xfs: factor out a xfs_rtallocate_align helper xfs: cleanup the calling convention for xfs_rtpick_extent xfs: make the rtalloc start hint a xfs_rtblock_t xfs: push the calls to xfs_rtallocate_range out to xfs_bmap_rtalloc xfs: factor out a xfs_growfs_rt_bmblock helper xfs: remove xfs_{rtbitmap,rtsummary}_wordcount xfs: factor out a xfs_last_rt_bmblock helper xfs: replace m_rsumsize with m_rsumblocks xfs: match on the global RT inode numbers in xfs_is_metadata_inode xfs: factor out rtbitmap/summary initialization helpers xfs: remove xfs_rtb_to_rtxrem xfs: push transaction join out of xfs_rtbitmap_lock and xfs_rtgroup_lock xfs: simplify xfs_rtalloc_query_range xfs: remove the i_mode check in xfs_release xfs: refactor f_op->release handling xfs: don't bother returning errors from xfs_file_release xfs: skip all of xfs_file_release when shut down xfs: check XFS_EOFBLOCKS_RELEASED earlier in xfs_release_eofblocks xfs: simplify extent lookup in xfs_can_free_eofblocks xfs: reclaim speculative preallocations for append only files xfs: use kfree_rcu_mightsleep to free the perag structures xfs: move the tagged perag lookup helpers to xfs_icache.c xfs: simplify tagged perag iteration xfs: convert perag lookup to xarray xfs: use xas_for_each_marked in xfs_reclaim_inodes_count xfs: ensure st_blocks never goes to zero during COW writes Dan Carpenter (1): xfs: remove unnecessary check Darrick J. Wong (19): xfs: don't return too-short extents from xfs_rtallocate_extent_block xfs: don't scan off the end of the rt volume in xfs_rtallocate_extent_block xfs: refactor aligning bestlen to prod xfs: clean up xfs_rtallocate_extent_exact a bit xfs: add xchk_setup_nothing and xchk_nothing helpers xfs: reduce excessive clamping of maxlen in xfs_rtallocate_extent_near xfs: validate inumber in xfs_iget xfs: fix broken variable-sized allocation detection in xfs_rtallocate_extent_block xfs: rearrange xfs_fsmap.c a little bit xfs: introduce new file range commit ioctls xfs: pass the icreate args object to xfs_dialloc xfs: move xfs_ioc_getfsmap out of xfs_ioctl.c xfs: fix C++ compilation errors in xfs_fs.h xfs: fix FITRIM reporting again xfs: replace shouty XFS_BM{BT,DR} macros xfs: refactor loading quota inodes in the regular case xfs: fix a sloppy memory handling bug in xfs_iroot_realloc xfs: standardize the btree maxrecs function parameters xfs: only free posteof blocks on first close Dave Chinner (1): xfs: don't free post-EOF blocks on read close Hongbo Li (1): xfs: use LIST_HEAD() to simplify code Jiapeng Chong (1): xfs: Remove duplicate xfs_trans_priv.h header John Garry (1): xfs: Use xfs set and clear mp state helpers fs/xfs/libxfs/xfs_ag.c | 94 +--- fs/xfs/libxfs/xfs_ag.h | 14 - 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 | 101 +++-- fs/xfs/libxfs/xfs_bmap_btree.c | 24 +- fs/xfs/libxfs/xfs_bmap_btree.h | 207 ++++++--- fs/xfs/libxfs/xfs_defer.c | 1 - fs/xfs/libxfs/xfs_fs.h | 31 +- fs/xfs/libxfs/xfs_ialloc.c | 9 +- fs/xfs/libxfs/xfs_ialloc.h | 4 +- fs/xfs/libxfs/xfs_ialloc_btree.c | 6 +- fs/xfs/libxfs/xfs_ialloc_btree.h | 3 +- fs/xfs/libxfs/xfs_inode_fork.c | 40 +- fs/xfs/libxfs/xfs_inode_util.c | 2 +- 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_rtbitmap.c | 274 ++++++++---- fs/xfs/libxfs/xfs_rtbitmap.h | 61 +-- fs/xfs/libxfs/xfs_sb.c | 92 ++-- fs/xfs/libxfs/xfs_sb.h | 3 + fs/xfs/libxfs/xfs_trans_resv.c | 4 +- fs/xfs/libxfs/xfs_types.h | 12 - fs/xfs/scrub/bmap_repair.c | 2 +- fs/xfs/scrub/common.h | 29 +- fs/xfs/scrub/inode_repair.c | 12 +- fs/xfs/scrub/rtsummary.c | 11 +- fs/xfs/scrub/rtsummary.h | 2 +- fs/xfs/scrub/rtsummary_repair.c | 12 +- fs/xfs/scrub/scrub.h | 29 +- fs/xfs/scrub/tempfile.c | 2 +- fs/xfs/xfs_bmap_item.c | 17 + fs/xfs/xfs_bmap_util.c | 38 +- fs/xfs/xfs_discard.c | 17 +- fs/xfs/xfs_exchrange.c | 143 +++++- fs/xfs/xfs_exchrange.h | 16 +- fs/xfs/xfs_file.c | 72 ++- fs/xfs/xfs_fsmap.c | 403 +++++++++++------ fs/xfs/xfs_fsmap.h | 6 +- fs/xfs/xfs_fsops.c | 2 +- fs/xfs/xfs_icache.c | 89 ++-- fs/xfs/xfs_inode.c | 86 +--- fs/xfs/xfs_inode.h | 12 +- fs/xfs/xfs_ioctl.c | 134 +----- fs/xfs/xfs_log.c | 2 +- fs/xfs/xfs_log_recover.c | 2 +- fs/xfs/xfs_mount.c | 2 +- fs/xfs/xfs_mount.h | 5 +- fs/xfs/xfs_mru_cache.c | 3 +- fs/xfs/xfs_qm.c | 48 +- fs/xfs/xfs_qm.h | 3 + fs/xfs/xfs_qm_syscalls.c | 13 +- fs/xfs/xfs_quotaops.c | 53 ++- fs/xfs/xfs_rtalloc.c | 868 +++++++++++++++++-------------------- fs/xfs/xfs_super.c | 13 +- fs/xfs/xfs_symlink.c | 2 +- fs/xfs/xfs_trace.h | 61 ++- 60 files changed, 1772 insertions(+), 1454 deletions(-)