Hi all, this is another fallout from the zoned XFS work, which stresses the XFS COW I/O path very heavily. It affects normal I/O to reflinked files as well, but is very hard to hit there. The main problem here is that we only punch out delalloc reservations from the data fork, but COW I/O places delalloc extents into the COW fork, which means that it won't get punched out forshort writes. Changes since v4: - unshare also already holds the invalidate_lock as found out by recent fsstress enhancements Changes since v3: - improve two comments Changes since v2: - drop the patches already merged and rebased to latest Linus' tree - moved taking invalidate_lock from iomap to the caller to avoid a too complicated locking protocol - better document the xfs_file_write_zero_eof return value - fix a commit log typo Changes since v1: - move the already reviewed iomap prep changes to the beginning in case Christian wants to take them ASAP - take the invalidate_lock for post-EOF zeroing so that we have a consistent locking pattern for zeroing. Diffstat: Documentation/filesystems/iomap/operations.rst | 2 fs/iomap/buffered-io.c | 111 ++++++------------- fs/xfs/xfs_aops.c | 4 fs/xfs/xfs_bmap_util.c | 10 + fs/xfs/xfs_bmap_util.h | 2 fs/xfs/xfs_file.c | 146 +++++++++++++++---------- fs/xfs/xfs_iomap.c | 67 +++++++---- include/linux/iomap.h | 20 ++- 8 files changed, 198 insertions(+), 164 deletions(-)