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. [Sorry for the rapid fire repost, but as we're down to comment changes and the series has been fully reviewed except for the trivial refactoring patch at the beginning I'd like to get it out before being semi-offline for a few days] 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 | 65 +++++++---- include/linux/iomap.h | 20 ++- 8 files changed, 196 insertions(+), 164 deletions(-)