Hi Linus, Please pull this branch with changes for xfs for 6.2-rc1. As promised, this second pull request contains data corruption fixes for fsdax filesystems that support mapping pmem storage to multiple files. (IOWs, XFS, which is the only fs that uses it.) I anticipate a third pull request in a couple of days to start the stabilization phase of 6.2, though seeing as it's the last workweek of the year I could just as well punt to January. As usual, 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. --D The following changes since commit 52f31ed228212ba572c44e15e818a3a5c74122c0: xfs: dquot shrinker doesn't check for XFS_DQFLAG_FREEING (2022-12-08 08:29:58 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-6.2-merge-9 for you to fetch changes up to 4883f57a2d861a68588aefbf592f86d1e059f1ec: xfs: remove restrictions for fsdax and reflink (2022-12-08 08:29:59 -0800) ---------------------------------------------------------------- New XFS/fsdax code for 6.2, part 2: - Fixes for some serious data corruption problems that were introduced in the 6.0 series allowing for files to share pmem. These include: - Invalidate mapped pages whenever we write to a shared pmem page so that all the involved processes take a page fault so that they can actually set up the COW - Fix missing zeroing around a file range that is about to be written and is backed by shared pmem - Set up fsdax mappings to be shared any time we notice shared storage, even on a read operation - Fix the dax dedupe comparison function misusing iterators and doing no comparison at all - Fix missing implementation of the fallocate funshare command which led to callers using the pagecache implementation on fsdax(!) - Fix some broken inode reflink/dax state handling in XFS Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> ---------------------------------------------------------------- Shiyang Ruan (8): fsdax: introduce page->share for fsdax in reflink mode fsdax: invalidate pages when CoW fsdax: zero the edges if source is HOLE or UNWRITTEN fsdax,xfs: set the shared flag when file extent is shared fsdax: dedupe: iter two files at the same time xfs: use dax ops for zero and truncate in fsdax mode fsdax,xfs: port unshare to fsdax xfs: remove restrictions for fsdax and reflink fs/dax.c | 221 +++++++++++++++++++++++++++++++-------------- fs/xfs/xfs_ioctl.c | 4 - fs/xfs/xfs_iomap.c | 6 +- fs/xfs/xfs_iops.c | 4 - fs/xfs/xfs_reflink.c | 8 +- include/linux/dax.h | 2 + include/linux/mm_types.h | 5 +- include/linux/page-flags.h | 2 +- 8 files changed, 167 insertions(+), 85 deletions(-)