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 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: fs/iomap/buffered-io.c | 139 +++++++++++++++++++++++-------------------------- 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 | 139 ++++++++++++++++++++++++++++--------------------- fs/xfs/xfs_iomap.c | 59 +++++++++----------- include/linux/iomap.h | 11 ++- 7 files changed, 192 insertions(+), 172 deletions(-)