[ Sasha's backport helper bot ] Hi, The upstream commit SHA1 provided is correct: 14a537983b228cb050ceca3a5b743d01315dc4aa WARNING: Author mismatch between patch and upstream commit: Backport author: Leah Rumancik<leah.rumancik@xxxxxxxxx> Commit author: Catherine Hoang<catherine.hoang@xxxxxxxxxx> Status in newer kernel trees: 6.13.y | Present (exact SHA1) 6.12.y | Present (exact SHA1) 6.6.y | Present (different SHA1: d7d84772c3f0) 6.1.y | Present (different SHA1: 9e20b44a856b) Note: The patch differs from the upstream commit: --- 1: 14a537983b228 ! 1: a0286e9750934 xfs: allow read IO and FICLONE to run concurrently @@ Metadata ## Commit message ## xfs: allow read IO and FICLONE to run concurrently + [ Upstream commit 14a537983b228cb050ceca3a5b743d01315dc4aa ] + One of our VM cluster management products needs to snapshot KVM image files so that they can be restored in case of failure. Snapshotting is done by redirecting VM disk writes to a sidecar file and using reflink @@ Commit message Reviewed-by: Dave Chinner <dchinner@xxxxxxxxxx> Reviewed-by: Christoph Hellwig <hch@xxxxxx> Signed-off-by: Chandan Babu R <chandanbabu@xxxxxxxxxx> + Signed-off-by: Leah Rumancik <leah.rumancik@xxxxxxxxx> ## fs/xfs/xfs_file.c ## @@ fs/xfs/xfs_file.c: xfs_ilock_iocb( @@ fs/xfs/xfs_file.c: xfs_file_remap_range( + xfs_iunlock2_remapping(src, dest); if (ret) trace_xfs_reflink_remap_range_error(dest, ret, _RET_IP_); - return remapped > 0 ? remapped : ret; + /* @@ fs/xfs/xfs_file.c: __xfs_filemap_fault( struct inode *inode = file_inode(vmf->vma->vm_file); struct xfs_inode *ip = XFS_I(inode); vm_fault_t ret; + unsigned int lock_mode = 0; - trace_xfs_filemap_fault(ip, order, write_fault); + trace_xfs_filemap_fault(ip, pe_size, write_fault); @@ fs/xfs/xfs_file.c: __xfs_filemap_fault( file_update_time(vmf->vma->vm_file); @@ fs/xfs/xfs_file.c: __xfs_filemap_fault( pfn_t pfn; - xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED); - ret = xfs_dax_fault(vmf, order, write_fault, &pfn); + ret = xfs_dax_fault(vmf, pe_size, write_fault, &pfn); if (ret & VM_FAULT_NEEDDSYNC) - ret = dax_finish_sync_fault(vmf, order, pfn); + ret = dax_finish_sync_fault(vmf, pe_size, pfn); - xfs_iunlock(XFS_I(inode), XFS_MMAPLOCK_SHARED); + } else if (write_fault) { + ret = iomap_page_mkwrite(vmf, &xfs_page_mkwrite_iomap_ops); --- Results of testing on various branches: | Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.1.y | Success | Success |