Hi all, Here's v3 of the change to improve zero range performance in the case of frequent size extensions leading to excessive flushing. The main differences from v2 are the addition of patch 1 to replace the need for an iter reinit helper, some minor cleanups, and the addition of patch 4 to detect unexpected uses of zero range now that it no longer updates i_size. Thoughts, reviews, flames appreciated. Brian v3: - Added new patch 1 to always reset per-iter state in iomap_iter. - Dropped iomap_iter_init() helper. - Misc. cleanups. - Appended patch 4 to warn on zeroing beyond EOF. v2: https://lore.kernel.org/linux-fsdevel/20241031140449.439576-1-bfoster@xxxxxxxxxx/ - Added patch 1 to lift zeroed mapping handling code into caller. - Split unaligned start range handling at the top level. - Retain existing conditional flush behavior (vs. unconditional flush) for the remaining range. v1: https://lore.kernel.org/linux-fsdevel/20241023143029.11275-1-bfoster@xxxxxxxxxx/ Brian Foster (4): iomap: reset per-iter state on non-error iter advances iomap: lift zeroed mapping handling into iomap_zero_range() iomap: elide flush from partial eof zero range iomap: warn on zero range of a post-eof folio fs/iomap/buffered-io.c | 89 ++++++++++++++++++++++-------------------- fs/iomap/iter.c | 11 +++--- 2 files changed, 51 insertions(+), 49 deletions(-) -- 2.47.0