linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/16] fuse: use iomap for buffered writes + writeback
@ 2025-06-24  2:21 Joanne Koong
  2025-06-24  2:21 ` [PATCH v3 01/16] iomap: pass more arguments using struct iomap_writepage_ctx Joanne Koong
                   ` (16 more replies)
  0 siblings, 17 replies; 50+ messages in thread
From: Joanne Koong @ 2025-06-24  2:21 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: hch, miklos, brauner, djwong, anuj20.g, linux-xfs, linux-doc,
	linux-block, gfs2, kernel-team

This series adds fuse iomap support for buffered writes and dirty folio
writeback. This is needed so that granular uptodate and dirty tracking can
be used in fuse when large folios are enabled. This has two big advantages.
For writes, instead of the entire folio needing to be read into the page
cache, only the relevant portions need to be. For writeback, only the
dirty portions need to be written back instead of the entire folio.

This patchset is composed of two parts:
a) Christoph's iomap changes (patches 1 to 11) which are taken verbatim
   from [1]
b) fuse changes to use iomap (patches 12 to 16)

Please note the following:
* this patchset version temporarily drops the CONFIG_BLOCK iomap refactoring
  patches that will be needed to merge in the series. As of now, this breaks
  compilation for environments where CONFIG_BLOCK is not set, but the
  CONFIG_BLOCK iomap changes will be re-added back in once the core changes
  in this patchset are ready to go.
* this patchset does not enable large folios yet. That will be sent out in a
  separate future patchset.

This series is on top of commit 86731a2a6 ("Linux 6.16-rc3") in the linux
tree.

Thanks,
Joanne

[1] https://lore.kernel.org/linux-fsdevel/20250617105514.3393938-1-hch@lst.de/


Changeset
-------
v2 -> v3:
* Fix up fuse patches to use iomap APIs from Christoph's patches
* Drop CONFIG_BLOCK patches
* Add patch to use iomap for invalidation and partial uptodateness check
* Add patch for refactoring fuse writeback to use iomap_writepage_ctx inode
v2: https://lore.kernel.org/linux-fsdevel/20250613214642.2903225-1-joannelkoong@gmail.com/

v1 -> v2:
* Drop IOMAP_IN_MEM type and just use IOMAP_MAPPED for fuse
* Separate out new helper functions added to iomap into separate commits
* Update iomap documentation
* Clean up iomap_writeback_dirty_folio() locking logic w/ christoph's
  recommendation 
* Refactor ->map_blocks() to generic ->writeback_folio()
* Refactor ->submit_ioend() to generic ->writeback_complete()
* Add patch for changing 'count' to 'async_writeback'
* Rebase commits onto linux branch instead of fuse branch
v1: https://lore.kernel.org/linux-fsdevel/20250606233803.1421259-1-joannelkoong@gmail.com/


Christoph Hellwig (7):
  iomap: pass more arguments using struct iomap_writepage_ctx
  iomap: refactor the writeback interface
  iomap: hide ioends from the generic writeback code
  iomap: move all ioend handling to ioend.c
  iomap: rename iomap_writepage_map to iomap_writeback_folio
  iomap: export iomap_writeback_folio
  iomap: replace iomap_folio_ops with iomap_write_ops

Joanne Koong (9):
  iomap: cleanup the pending writeback tracking in
    iomap_writepage_map_blocks
  iomap: add public helpers for uptodate state manipulation
  iomap: move folio_unlock out of iomap_writeback_folio
  iomap: add read_folio_range() handler for buffered writes
  fuse: use iomap for buffered writes
  fuse: use iomap for writeback
  fuse: use iomap for folio laundering
  fuse: hook into iomap for invalidating and checking partial
    uptodateness
  fuse: refactor writeback to use iomap_writepage_ctx inode

 Documentation/filesystems/iomap/design.rst    |   3 -
 .../filesystems/iomap/operations.rst          |  51 +-
 block/fops.c                                  |  37 +-
 fs/fuse/Kconfig                               |   1 +
 fs/fuse/file.c                                | 327 ++++++-------
 fs/gfs2/aops.c                                |   8 +-
 fs/gfs2/bmap.c                                |  48 +-
 fs/gfs2/bmap.h                                |   1 +
 fs/gfs2/file.c                                |   3 +-
 fs/iomap/buffered-io.c                        | 438 +++++-------------
 fs/iomap/internal.h                           |   1 -
 fs/iomap/ioend.c                              | 220 ++++++++-
 fs/iomap/trace.h                              |   2 +-
 fs/xfs/xfs_aops.c                             | 238 ++++++----
 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                         |  81 ++--
 20 files changed, 775 insertions(+), 746 deletions(-)

-- 
2.47.1


^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2025-07-03 16:51 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-24  2:21 [PATCH v3 00/16] fuse: use iomap for buffered writes + writeback Joanne Koong
2025-06-24  2:21 ` [PATCH v3 01/16] iomap: pass more arguments using struct iomap_writepage_ctx Joanne Koong
2025-06-24  6:07   ` Johannes Thumshirn
2025-06-24 22:02     ` Joanne Koong
2025-07-02 15:57   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 02/16] iomap: cleanup the pending writeback tracking in iomap_writepage_map_blocks Joanne Koong
2025-06-24  6:09   ` Johannes Thumshirn
2025-07-02 15:59   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 03/16] iomap: refactor the writeback interface Joanne Koong
2025-07-02 17:13   ` Darrick J. Wong
2025-07-03 12:16     ` Christoph Hellwig
2025-07-03 16:51       ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 04/16] iomap: hide ioends from the generic writeback code Joanne Koong
2025-07-02 17:38   ` Darrick J. Wong
2025-07-03 12:19     ` Christoph Hellwig
2025-06-24  2:21 ` [PATCH v3 05/16] iomap: add public helpers for uptodate state manipulation Joanne Koong
2025-07-02 17:39   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 06/16] iomap: move all ioend handling to ioend.c Joanne Koong
2025-07-02 17:40   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 07/16] iomap: rename iomap_writepage_map to iomap_writeback_folio Joanne Koong
2025-07-02 17:41   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 08/16] iomap: move folio_unlock out of iomap_writeback_folio Joanne Koong
2025-07-02 17:43   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 09/16] iomap: export iomap_writeback_folio Joanne Koong
2025-07-02 17:44   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 10/16] iomap: replace iomap_folio_ops with iomap_write_ops Joanne Koong
2025-07-02 17:48   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 11/16] iomap: add read_folio_range() handler for buffered writes Joanne Koong
2025-07-02 17:51   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 12/16] fuse: use iomap " Joanne Koong
2025-06-24 10:07   ` Miklos Szeredi
2025-06-24 21:52     ` Joanne Koong
2025-06-25 11:10   ` kernel test robot
2025-07-02 17:55   ` Darrick J. Wong
2025-07-02 17:57     ` Darrick J. Wong
2025-07-02 22:57       ` Joanne Koong
2025-06-24  2:21 ` [PATCH v3 13/16] fuse: use iomap for writeback Joanne Koong
2025-06-25 14:17   ` kernel test robot
2025-06-25 16:48     ` Joanne Koong
2025-07-01 11:34       ` Christian Brauner
2025-07-02 18:13   ` Darrick J. Wong
2025-07-02 23:20     ` Joanne Koong
2025-06-24  2:21 ` [PATCH v3 14/16] fuse: use iomap for folio laundering Joanne Koong
2025-06-25 17:02   ` kernel test robot
2025-07-02 18:14   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 15/16] fuse: hook into iomap for invalidating and checking partial uptodateness Joanne Koong
2025-07-02 18:14   ` Darrick J. Wong
2025-06-24  2:21 ` [PATCH v3 16/16] fuse: refactor writeback to use iomap_writepage_ctx inode Joanne Koong
2025-07-02 18:15   ` Darrick J. Wong
2025-06-24 13:31 ` [PATCH v3 00/16] fuse: use iomap for buffered writes + writeback Christoph Hellwig

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).