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
next prev parent 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).