linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christian Brauner <brauner@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Christian Brauner <brauner@kernel.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL 01/17 for v6.19] vfs iomap
Date: Fri, 28 Nov 2025 17:48:12 +0100	[thread overview]
Message-ID: <20251128-vfs-iomap-v619-1b28bca81324@brauner> (raw)
In-Reply-To: <20251128-vfs-v619-77cd88166806@brauner>

Hey Linus,

/* Summary */
This contains the iomap changes for this cycle:

* FUSE iomap Support for Buffered Reads

  This adds iomap support for FUSE buffered reads and readahead. This
  enables granular uptodate tracking with large folios so only
  non-uptodate portions need to be read. Also fixes a race condition
  with large folios + writeback cache that could cause data corruption
  on partial writes followed by reads.

  - Refactored iomap read/readahead bio logic into helpers
  - Added caller-provided callbacks for read operations
  - Moved buffered IO bio logic into new file
  - FUSE now uses iomap for read_folio and readahead

* Zero Range Folio Batch Support

  Adds folio batch support for iomap_zero_range() to handle dirty folios
  over unwritten mappings. Fixes raciness issues where dirty data could
  be lost during zero range operations.

  - filemap_get_folios_tag_range() helper for dirty folio lookup
  - Optional zero range dirty folio processing
  - XFS fills dirty folios on zero range of unwritten mappings
  - Removed old partial EOF zeroing optimization

* DIO Write Completions from Interrupt Context

  Restore pre-iomap behavior where pure overwrite completions run inline
  rather than being deferred to workqueue. Reduces context switches for
  high-performance workloads like ScyllaDB.

  - Removed unused IOCB_DIO_CALLER_COMP code
  - Error completions always run in user context (fixes zonefs)
  - Reworked REQ_FUA selection logic
  - Inverted IOMAP_DIO_INLINE_COMP to IOMAP_DIO_OFFLOAD_COMP

* Buffered IO Cleanups

  Some performance and code clarity improvements:

  - Replace manual bitmap scanning with find_next_bit()
  - Simplify read skip logic for writes
  - Optimize pending async writeback accounting
  - Better variable naming
  - Documentation for iomap_finish_folio_write() requirements

* Misaligned Vectors for Zoned XFS

  Enables sub-block aligned vectors in XFS always-COW mode for zoned
  devices via new IOMAP_DIO_FSBLOCK_ALIGNED flag.

* Bug Fixes

  - Allocate s_dio_done_wq for async reads (fixes syzbot report after error completion changes)
  - Fix iomap_read_end() for already uptodate folios (regression fix)

/* Testing */

gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)

No build failures or warnings were observed.

/* Conflicts */

Merge conflicts with mainline
=============================

No known conflicts.

Merge conflicts with other trees
================================

[1]: https://lore.kernel.org/linux-next/20251117143259.05d36122@canb.auug.org.au

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.iomap

for you to fetch changes up to 7fd8720dff2d9c70cf5a1a13b7513af01952ec02:

  iomap: allocate s_dio_done_wq for async reads as well (2025-11-25 10:22:19 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.iomap tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.iomap

----------------------------------------------------------------
Brian Foster (7):
      filemap: add helper to look up dirty folios in a range
      iomap: remove pos+len BUG_ON() to after folio lookup
      iomap: optional zero range dirty folio processing
      xfs: always trim mapping to requested range for zero range
      xfs: fill dirty folios on zero range of unwritten mappings
      iomap: remove old partial eof zeroing optimization
      xfs: error tag to force zeroing on debug kernels

Christian Brauner (5):
      Merge patch series "fuse: use iomap for buffered reads + readahead"
      Merge patch series "iomap: zero range folio batch support"
      Merge patch series "alloc misaligned vectors for zoned XFS v2"
      Merge patch series "iomap: buffered io changes"
      Merge patch series "enable iomap dio write completions from interrupt context v2"

Christoph Hellwig (8):
      iomap: move buffered io bio logic into new file
      xfs: support sub-block aligned vectors in always COW mode
      fs, iomap: remove IOCB_DIO_CALLER_COMP
      iomap: always run error completions in user context
      iomap: rework REQ_FUA selection
      iomap: support write completions from interrupt context
      iomap: invert the polarity of IOMAP_DIO_INLINE_COMP
      iomap: allocate s_dio_done_wq for async reads as well

Joanne Koong (24):
      iomap: move bio read logic into helper function
      iomap: move read/readahead bio submission logic into helper function
      iomap: simplify iomap_iter_advance()
      iomap: store read/readahead bio generically
      iomap: adjust read range correctly for non-block-aligned positions
      iomap: iterate over folio mapping in iomap_readpage_iter()
      iomap: rename iomap_readpage_iter() to iomap_read_folio_iter()
      iomap: rename iomap_readpage_ctx struct to iomap_read_folio_ctx
      iomap: track pending read bytes more optimally
      iomap: set accurate iter->pos when reading folio ranges
      iomap: add caller-provided callbacks for read and readahead
      iomap: make iomap_read_folio() a void return
      fuse: use iomap for read_folio
      fuse: use iomap for readahead
      fuse: remove fc->blkbits workaround for partial writes
      iomap: rename bytes_pending/bytes_accounted to bytes_submitted/bytes_not_submitted
      iomap: account for unaligned end offsets when truncating read range
      docs: document iomap writeback's iomap_finish_folio_write() requirement
      iomap: optimize pending async writeback accounting
      iomap: simplify ->read_folio_range() error handling for reads
      iomap: simplify when reads can be skipped for writes
      iomap: use find_next_bit() for dirty bitmap scanning
      iomap: use find_next_bit() for uptodate bitmap scanning
      iomap: fix iomap_read_end() for already uptodate folios

Qu Wenruo (1):
      iomap: add IOMAP_DIO_FSBLOCK_ALIGNED flag

 Documentation/filesystems/iomap/operations.rst |  50 +-
 block/fops.c                                   |   5 +-
 fs/backing-file.c                              |   6 -
 fs/dax.c                                       |  30 +-
 fs/erofs/data.c                                |   5 +-
 fs/fuse/dir.c                                  |   2 +-
 fs/fuse/file.c                                 | 286 ++++++-----
 fs/fuse/fuse_i.h                               |   8 -
 fs/fuse/inode.c                                |  13 +-
 fs/gfs2/aops.c                                 |   6 +-
 fs/iomap/Makefile                              |   3 +-
 fs/iomap/bio.c                                 |  88 ++++
 fs/iomap/buffered-io.c                         | 636 +++++++++++++++----------
 fs/iomap/direct-io.c                           | 230 +++++----
 fs/iomap/internal.h                            |  12 +
 fs/iomap/ioend.c                               |   2 -
 fs/iomap/iter.c                                |  20 +-
 fs/iomap/seek.c                                |   8 +-
 fs/iomap/trace.h                               |   7 +-
 fs/xfs/libxfs/xfs_errortag.h                   |   6 +-
 fs/xfs/xfs_aops.c                              |   5 +-
 fs/xfs/xfs_file.c                              |  50 +-
 fs/xfs/xfs_iomap.c                             |  38 +-
 fs/zonefs/file.c                               |   5 +-
 include/linux/fs.h                             |  43 +-
 include/linux/iomap.h                          |  86 +++-
 include/linux/pagemap.h                        |   2 +
 io_uring/rw.c                                  |  16 +-
 mm/filemap.c                                   |  58 +++
 29 files changed, 1093 insertions(+), 633 deletions(-)
 create mode 100644 fs/iomap/bio.c

  reply	other threads:[~2025-11-28 16:51 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-28 16:48 [GIT PULL 00/17 for v6.19] v6.19 Christian Brauner
2025-11-28 16:48 ` Christian Brauner [this message]
2025-12-01 22:08   ` [GIT PULL 01/17 for v6.19] vfs iomap pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 02/17 for v6.19] vfs misc Christian Brauner
2025-12-01 22:08   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 03/17 for v6.19] vfs inode Christian Brauner
2025-12-01 22:08   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 04/17 for v6.19] vfs writeback Christian Brauner
2025-12-01 22:08   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 05/17 for v6.19] namespaces Christian Brauner
2025-12-01 19:06   ` Eric W. Biederman
2025-12-02 17:00     ` Linus Torvalds
2025-12-03 10:07       ` Christian Brauner
2025-12-01 22:08   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 06/17 for v6.19] vfs coredump Christian Brauner
2025-12-01 22:08   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 07/17 for v6.19] vfs folio Christian Brauner
2025-12-01 22:08   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 08/17 for v6.19] cred guards Christian Brauner
2025-12-01 21:53   ` Linus Torvalds
2025-12-02  1:26     ` Sasha Levin
2025-12-02  1:36       ` [PATCH] nfs/localio: make do_nfs_local_call_write() return void Sasha Levin
2025-12-01 22:08   ` [GIT PULL 08/17 for v6.19] cred guards pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 09/17 for v6.19] vfs headers Christian Brauner
2025-12-01 23:22   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 10/17 for v6.19] vfs super guards Christian Brauner
2025-12-01 23:22   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 11/17 for v6.19] minix Christian Brauner
2025-12-01 23:22   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 12/17 for v6.19] vfs directory delegations Christian Brauner
2025-12-02  3:19   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 13/17 for v6.19] vfs directory locking Christian Brauner
2025-12-02  3:19   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 14/17 for v6.19] overlayfs cred guards Christian Brauner
2025-12-02  3:19   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 15/17 for v6.19] autofs Christian Brauner
2025-12-02  3:19   ` pr-tracker-bot
2025-11-28 16:48 ` [GIT PULL 16/17 for v6.19] vfs fd prepare Christian Brauner
2025-12-01 14:15   ` Al Viro
2025-12-01 18:41     ` Sean Christopherson
2025-11-28 16:48 ` [GIT PULL 17/17 for v6.19] vfs fd prepare minimal Christian Brauner
2025-12-02  1:35   ` Linus Torvalds
2025-12-02  9:42     ` Christian Brauner
2025-12-02  3:19   ` pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251128-vfs-iomap-v619-1b28bca81324@brauner \
    --to=brauner@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).