Re: map multiple blocks per ->map_blocks in iomap writeback

Christian Brauner
2023-12-11T10:45:51Z

On Thu, 07 Dec 2023 08:26:56 +0100, Christoph Hellwig wrote:
> this series overhaults a large chunk of the iomap writeback code with
> the end result that ->map_blocks can now map multiple blocks at a time,
> at least as long as they are all inside the same folio.
>
> On a sufficiently large system (32 cores in my case) this significantly
> reduces CPU usage for buffered write workloads on xfs, with a very minor
> improvement in write bandwith that might be within the measurement
> tolerance.
>
> [...]

Darrick, Christoph, I gave us a separate branch for this. I thought about
putting this on top of vfs.misc but I feel that this would be a bit ugly.
Different layout is possible though.

---

Applied to the vfs.iomap branch of the vfs/vfs.git tree.
Patches in the vfs.iomap branch should appear in linux-next soon.

Please report any outstanding bugs that were missed during review in a
new review to the original patch series allowing us to drop it.

It's encouraged to provide Acked-bys and Reviewed-bys even though the
patch has now been applied. If possible patch trailers will be updated.

Note that commit hashes shown below are subject to change due to rebase,
trailer updates or similar. If in doubt, please check the listed branch.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
branch: vfs.iomap

[01/14] iomap: clear the per-folio dirty bits on all writeback failures
https://git.kernel.org/vfs/vfs/c/7c821e1f5a5a
[02/14] iomap: treat inline data in iomap_writepage_map as an I/O error
https://git.kernel.org/vfs/vfs/c/6571f184afe3
[03/14] iomap: move the io_folios field out of struct iomap_ioend
https://git.kernel.org/vfs/vfs/c/e5f9e159cf10
[04/14] iomap: move the PF_MEMALLOC check to iomap_writepages
https://git.kernel.org/vfs/vfs/c/fc51566e62ef
[05/14] iomap: factor out a iomap_writepage_handle_eof helper
https://git.kernel.org/vfs/vfs/c/89d887160535
[06/14] iomap: move all remaining per-folio logic into iomap_writepage_map
https://git.kernel.org/vfs/vfs/c/6d3bac5014bf
[07/14] iomap: clean up the iomap_alloc_ioend calling convention
https://git.kernel.org/vfs/vfs/c/d7acac8ed175
[08/14] iomap: move the iomap_sector sector calculation out of iomap_add_to_ioend
https://git.kernel.org/vfs/vfs/c/a04db4e40bdb
[09/14] iomap: don't chain bios
https://git.kernel.org/vfs/vfs/c/7a579e360d15
[10/14] iomap: only call mapping_set_error once for each failed bio
https://git.kernel.org/vfs/vfs/c/a64f2b75da6b
[11/14] iomap: factor out a iomap_writepage_map_block helper
https://git.kernel.org/vfs/vfs/c/3853862b0b77
[12/14] iomap: submit ioends immediately
https://git.kernel.org/vfs/vfs/c/ae00bec07dee
[13/14] iomap: map multiple blocks at a time
https://git.kernel.org/vfs/vfs/c/2487070c95f4
[14/14] iomap: pass the length of the dirty region to ->map_blocks