Hi all, this series replies the existing callback-based iomap_apply to an iter based model. The prime aim here is to simply the DAX reflink support, which requires iterating through two inodes, something that is rather painful with the apply model. It also helps to kill an indirect call per segment as-is. Compared to the earlier patchset from Matthew Wilcox that this series is based upon it does not eliminate all indirect calls, but as the upside it does not change the file systems at all (except for the btrfs and gfs2 hooks which have slight prototype changes). This passes basic testing on XFS for block based file systems. The DAX changes are entirely untested as I haven't managed to get pmem work in recent qemu. Diffstat: b/fs/btrfs/inode.c | 5 b/fs/buffer.c | 4 b/fs/dax.c | 578 ++++++++++++++++++++++------------------------- b/fs/gfs2/bmap.c | 5 b/fs/internal.h | 4 b/fs/iomap/Makefile | 2 b/fs/iomap/buffered-io.c | 344 +++++++++++++-------------- b/fs/iomap/direct-io.c | 162 ++++++------- b/fs/iomap/fiemap.c | 101 +++----- b/fs/iomap/iter.c | 74 ++++++ b/fs/iomap/seek.c | 88 +++---- b/fs/iomap/swapfile.c | 38 +-- b/fs/iomap/trace.h | 35 +- b/include/linux/iomap.h | 73 ++++- fs/iomap/apply.c | 99 -------- 15 files changed, 777 insertions(+), 835 deletions(-)