lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251128-vfs-iomap-v619-1b28bca81324@brauner>
Date: Fri, 28 Nov 2025 17:48:12 +0100
From: Christian Brauner <brauner@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Christian Brauner <brauner@...nel.org>,
	linux-fsdevel@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: [GIT PULL 01/17 for v6.19] vfs iomap

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@...olite.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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ