Re: refactor the iomap writeback code v4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 8, 2025 at 6:51 AM Christoph Hellwig <hch@xxxxxx> wrote:
>
> Hi all,
>
> this is an alternative approach to the writeback part of the
> "fuse: use iomap for buffered writes + writeback" series from Joanne.
> It doesn't try to make the code build without CONFIG_BLOCK yet.
>
> The big difference compared to Joanne's version is that I hope the
> split between the generic and ioend/bio based writeback code is a bit
> cleaner here.  We have two methods that define the split between the
> generic writeback code, and the implemementation of it, and all knowledge
> of ioends and bios now sits below that layer.
>
> This version passes testing on xfs, and gets as far as mainline for
> gfs2 (crashes in generic/361).
>
> Changes since v3:
>  - add a patch to drop unused includes
>  - drop the iomap_writepage_ctx renaming - we should do this separately and
>    including the variable names if desired
>  - add a comment about special casing of holes in iomap_writeback_range
>  - split the cleanups to iomap_read_folio_sync into a separate prep patch
>  - explain the IOMAP_HOLE check in xfs_iomap_valid
>  - explain the iomap_writeback_folio later folio unlock vs dropbehind
>  - some cargo culting for the #$W# RST formatting
>  - "improve" the documentation coverage a bit
>
> Changes since v2:
>  - rename iomap_writepage_ctx to iomap_writeback_ctx
>  - keep local map_blocks helpers in XFS
>  - allow buildinging the writeback and write code for !CONFIG_BLOCK
>
> Changes since v1:
>  - fix iomap reuse in block/zonefs/gfs2
>  - catch too large return value from ->writeback_range
>  - mention the correct file name in a commit log
>  - add patches for folio laundering
>  - add patches for read/modify write in the generic write helpers
>
> Diffstat:
>  Documentation/filesystems/iomap/design.rst     |    3
>  Documentation/filesystems/iomap/operations.rst |   57 +-
>  block/fops.c                                   |   37 +
>  fs/gfs2/aops.c                                 |    8
>  fs/gfs2/bmap.c                                 |   48 +-
>  fs/gfs2/bmap.h                                 |    1
>  fs/gfs2/file.c                                 |    3
>  fs/iomap/Makefile                              |    6
>  fs/iomap/buffered-io.c                         |  554 +++++++------------------
>  fs/iomap/direct-io.c                           |    5
>  fs/iomap/fiemap.c                              |    3
>  fs/iomap/internal.h                            |    1
>  fs/iomap/ioend.c                               |  220 +++++++++
>  fs/iomap/iter.c                                |    1
>  fs/iomap/seek.c                                |    4
>  fs/iomap/swapfile.c                            |    3
>  fs/iomap/trace.c                               |    1
>  fs/iomap/trace.h                               |    4
>  fs/xfs/xfs_aops.c                              |  212 +++++----
>  fs/xfs/xfs_file.c                              |    6
>  fs/xfs/xfs_iomap.c                             |   12
>  fs/xfs/xfs_iomap.h                             |    1
>  fs/xfs/xfs_reflink.c                           |    3
>  fs/zonefs/file.c                               |   40 +
>  include/linux/iomap.h                          |   82 ++-
>  25 files changed, 705 insertions(+), 610 deletions(-)

Thanks Christoph for all your work on this. I'll pull this and put v4
of the fuse iomap changes on top of this. I'll send that out this
week.





[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux