[PATCH v5 00/10] iomap: incremental per-operation iter advance

Brian Foster
2025-02-05T13:56:00Z

Hi all,

Here's v5 of the incremental iter advance series. The only change here
is to fix a transient factoring bug in the split up of the
iter_advance() rework that occurred in v4.

Thoughts, reviews, flames appreciated.

Brian

v5:
- Fixed refactoring bug in v4 by pulling 'processed' local var into
patch 4.
v4: https://lore.kernel.org/linux-fsdevel/20250204133044.80551-1-bfoster@redhat.com/
- Reordered patches 1 and 2 to keep iter advance cleanups together.
- Split patch 3 from v3 into patches 3-6.
v3: https://lore.kernel.org/linux-fsdevel/20250130170949.916098-1-bfoster@redhat.com/
- Code style and comment fixups.
- Variable type fixups and rework of iomap_iter_advance() to return
error/length separately.
- Advance the iter on unshare and zero range skip cases instead of
returning length.
v2: https://lore.kernel.org/linux-fsdevel/20250122133434.535192-1-bfoster@redhat.com/
- More refactoring of iomap_iter[_advance]() logic. Lifted out iter
continuation and stale logic and improved comments.
- Renamed some poorly named helpers and variables.
- Return remaining length for current iter from _iter_advance() and use
appropriately.
v1: https://lore.kernel.org/linux-fsdevel/20241213143610.1002526-1-bfoster@redhat.com/
- Reworked and fixed a bunch of functional issues.
RFC: https://lore.kernel.org/linux-fsdevel/20241125140623.20633-1-bfoster@redhat.com/

Brian Foster (10):
iomap: factor out iomap length helper
iomap: split out iomap check and reset logic from iter advance
iomap: refactor iomap_iter() length check and tracepoint
iomap: lift error code check out of iomap_iter_advance()
iomap: lift iter termination logic from iomap_iter_advance()
iomap: export iomap_iter_advance() and return remaining length
iomap: support incremental iomap_iter advances
iomap: advance the iter directly on buffered writes
iomap: advance the iter directly on unshare range
iomap: advance the iter directly on zero range

fs/iomap/buffered-io.c | 67 +++++++++++++--------------
fs/iomap/iter.c | 102 ++++++++++++++++++++++++++---------------
include/linux/iomap.h | 27 +++++++++--
3 files changed, 119 insertions(+), 77 deletions(-)

--
2.48.1