Hey Linus, /* Summary */ This contains a few updates for the iomap code: * Restore read-write hints in struct bio through the bi_write_hint member for the sake of UFS devices in mobile applications. This can result in up to 40% lower write amplification in UFS devices. The patch series that builds on this will be coming in via the SCSI maintainers. (Bart) * Overhaul the iomap writeback code. Afterwards ->map_blocks() is able to map multiple blocks at once as long as they're in the same folio. This reduces CPU usage for buffered write workloads on e.g., xfs on systems with lots of cores. (Christoph) * Record processed bytes in iomap_iter() trace event. (Kassey) * Extend iomap_writepage_map() trace event after Christoph's ->map_block() changes to map mutliple blocks at once. (Zhang) /* Testing */ clang: Debian clang version 16.0.6 (19) gcc: (Debian 13.2.0-7) 13.2.0 All patches are based on v6.8-rc1 and have been sitting in linux-next. No build failures or warnings were observed. /* Conflicts */ Merge conflicts with other trees ================================ [1] linux-next: manual merge of the scsi-mkp tree with the vfs-brauner tree https://lore.kernel.org/linux-next/20240227153436.33b48d59@xxxxxxxxxxxxxxxx [2] There's a merge conflict between the vfs-6.9-misc pull request sent as https://lore.kernel.org/r/20240308-vfs-misc-a4e7c50ce769@brauner that can be resolved like this: diff --cc include/linux/fs.h index 2ba751d097c1,bdabda5dc364..000000000000 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@@ -43,7 -43,7 +43,8 @@@ #include <linux/cred.h> #include <linux/mnt_idmapping.h> #include <linux/slab.h> +#include <linux/maple_tree.h> + #include <linux/rw_hint.h> #include <asm/byteorder.h> #include <uapi/linux/fs.h> Merge conflicts with mainline ============================= The following changes since commit 6613476e225e090cc9aad49be7fa504e290dd33d: Linux 6.8-rc1 (2024-01-21 14:11:32 -0800) are available in the Git repository at: git@xxxxxxxxxxxxxxxxxxx:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.9.iomap for you to fetch changes up to 86835c39e08e6d92a9d66d51277b2676bc659743: Merge tag 'vfs-6.9.rw_hint' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs (2024-03-04 18:35:21 +0100) Please consider pulling these changes from the signed vfs-6.9.iomap tag. Thanks! Christian ---------------------------------------------------------------- vfs-6.9.iomap ---------------------------------------------------------------- Bart Van Assche (6): fs: Fix rw_hint validation fs: Verify write lifetime constants at compile time fs: Split fcntl_rw_hint() fs: Move enum rw_hint into a new header file fs: Propagate write hints to the struct block_device inode block, fs: Restore the per-bio/request data lifetime fields Christian Brauner (1): Merge tag 'vfs-6.9.rw_hint' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs Christoph Hellwig (14): iomap: clear the per-folio dirty bits on all writeback failures iomap: treat inline data in iomap_writepage_map as an I/O error iomap: move the io_folios field out of struct iomap_ioend iomap: move the PF_MEMALLOC check to iomap_writepages iomap: factor out a iomap_writepage_handle_eof helper iomap: move all remaining per-folio logic into iomap_writepage_map iomap: clean up the iomap_alloc_ioend calling convention iomap: move the iomap_sector sector calculation out of iomap_add_to_ioend iomap: don't chain bios iomap: only call mapping_set_error once for each failed bio iomap: factor out a iomap_writepage_map_block helper iomap: submit ioends immediately iomap: map multiple blocks at a time iomap: pass the length of the dirty region to ->map_blocks Kassey Li (1): iomap: Add processed for iomap_iter Zhang Yi (1): iomap: add pos and dirty_len into trace_iomap_writepage_map block/bio.c | 2 + block/blk-crypto-fallback.c | 1 + block/blk-merge.c | 8 + block/blk-mq.c | 2 + block/bounce.c | 1 + block/fops.c | 5 +- fs/buffer.c | 12 +- fs/direct-io.c | 2 + fs/f2fs/f2fs.h | 1 + fs/fcntl.c | 64 +++-- fs/gfs2/bmap.c | 2 +- fs/inode.c | 1 + fs/iomap/buffered-io.c | 579 ++++++++++++++++++++++---------------------- fs/iomap/direct-io.c | 1 + fs/iomap/trace.h | 48 +++- fs/mpage.c | 1 + fs/xfs/xfs_aops.c | 9 +- fs/zonefs/file.c | 3 +- include/linux/blk-mq.h | 2 + include/linux/blk_types.h | 2 + include/linux/fs.h | 16 +- include/linux/iomap.h | 19 +- include/linux/rw_hint.h | 24 ++ 23 files changed, 455 insertions(+), 350 deletions(-) create mode 100644 include/linux/rw_hint.h