[GIT PULL] ext4 changes for 7.3-rc1

"Theodore Tso" <[email protected]>
Newsgroups gmane.comp.file-systems.ext4,gmane.linux.kernel
Message-ID <[email protected]>
The following changes since commit a13c140cc289c0b7b3770bce5b3ad42ab35074aa:

  Linux 7.2-rc3 (2026-07-12 14:16:39 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git tags/ext4_for_linus-7.3-rc1

for you to fetch changes up to 9091c97be34083587a75db174aab51551d8e8543:

  ext4: fix estimate extent index blocks in ext4_ext_index_trans_blocks() (2026-08-06 22:52:28 -0400)

----------------------------------------------------------------
Various ext4 updates for 7.3-rc1, including:

* Improve performance by allowing parallel DIO writes when we were
  previously being overly conservative when checking whether it was safe
  to avoid requiring an exclusive lock
* Improve the performance of ext4_mb_prefetch() used by fallocate() by
  avoiding work when it is not needed
* Remove the unnecessary custom end_io function ext4_end_buffer_io_sync()
* Improve performance when performing an overwrite to an already uptodate folio
* Clean up how we handle deallocating EA inodes to avoid a potential
  lock ordering issue when there is a failed mount while an EA inode is
  still being evicted.
* Use str_plural() instead of a custom macro
* Avoid soft lockups or RCU stalls if there are many busy buffers
  (caused by heavy I/O) while checkpointing
* Use scoped NOFS when starting a handle in nojournal mode
* Align fields in handle structure to optimize setting and getting
  the h_type and h_line_no fields
* Fix documentation of the meta_bg block group layout
* Bug fixes, including
   - Fix a potential out-of-bounds read in ext4_read_inline_dir()
   - Fix a potential deadlock when concurrent xattr operations are racing
     with each other when some of the xattrs are using the ea_inode feature.
   - Fix a spurious warning with data=journal that can be triggered when
     writeback races with remounting the file system read-only
   - Fix a potential deadlock when EXT4_IOC_MIGRATE races with a file system
     freeze operation
   - Make sure all in-flight direct I/O operations are complete before
     falling back to buffered I/O.
   - Handle IOCB_NOWAIT properly when performing a extending DAX write
   - Prevent potentially sleeping on a block allocation when
     IOCB_NOWAIT is set
   - Fix potential races when racing an inline data write with a page fault
   - Propagate errors when adding or removing extent ranges
     during a fast commit replay
   - Avoid trying to expand an inode's extra size when it is being
     evicted to avoid a number of corner case or deadlocks
   - Avoid spurious error when retrying inode extra size expansion
   - Fix corner cases where we underestimate the number of journal
     credits needed
   - Avoid hangs/crashes/WARNINGS caused by maliciously corrupted
     file systems
   - Don't issue spurious orphan clean message on RO file systems
   - Avoid leaving the file system in an inconsistent state after a
     crash when a WRITE_ZEROS in progress converting an unwritten
     extent to a written extent
   - Handle WRITE_ZEROS correctly when there are some partially dirtied
     regions in the page cache
   - Pass errors during zero-rage, truncate, or punch hole to the caller
     if ext4_get_block() fails
   - Wait for writeback to finish when triggered by zero-range or
     zero-range for those devices that require stable writes
   - If the reserved gid superblock field is set, set the reserved gid
     instead of the reserved uid

----------------------------------------------------------------
Aditya Prakash Srivastava (3):
      ext4: fix ABBA deadlock in ext4_xattr_inode_cache_find()
      ext4: use fsdata to track inline data write state and fix race
      ext4: cleanup unused CONVERT_INLINE_DATA flag

Baokun Li (9):
      ext4: reject mount if clusters/inodes per group are not 8-aligned
      ext4: reduce max cluster size to match documented 256MB limit
      ext4: reject mount if inodes per group is not a multiple of inodes per block
      ext4: prevent sleeping allocation in NOWAIT write path
      ext4: drain in-flight DIO before buffered write fallback
      ext4: skip overwrite check for aligned non-extending DIO writes
      ext4: base unaligned DIO lock decision on partial block zeroing
      ext4: use kiocb_modified instead of file_modified in DIO/DAX write path
      ext4: fix NOWAIT semantic violation in DAX extending writes

Bohdan Trach (2):
      ext4: avoid RWM atomic in EXT4_MB_GRP_TEST_AND_SET_READ
      ext4: get ext4_group_desc in ext4_mb_prefetch only when necessary

Eric Biggers (1):
      ext4: don't enable DAX on new encrypted files

Gerald Yang (1):
      ext4: clear stale xarray tags on folios skipped during writeback

Guanghui Yang (3):
      ext4: propagate errors from fast commit range replay
      ext4: clear error before retrying inode xattr space fallback
      ext4: fix buffer_head leak in ext4_init_orphan_info

Jan Kara (4):
      ext4: fix spurious message about orphan cleanup on RO fs
      ext4: teach ext4_meta_trans_blocks() about number of allocated extents
      ext4: fix transaction overflow during writeback
      ext4: fix estimate extent index blocks in ext4_ext_index_trans_blocks()

Jia Zhu (2):
      buffer: avoid tail commit walk for uptodate folios
      ext4: avoid tail write_begin walk for uptodate folios

Jiazi Liu (1):
      ext4: fix incorrect function call when initializing s_resgid

Joshua Crofts (1):
      ext4: use str_plural() instead of custom macro

Junzhe Yu (1):
      ext4: guard against NULL s_group_info in ext4_get_group_info

Matthew Wilcox (Oracle) (1):
      ext4: remove ext4_end_buffer_io_sync()

Matthias Goergens (1):
      ext4: stop retrying saturated xattr cache entries

Max Kellermann (2):
      jbd2: check need_resched() when skipping busy checkpoint buffers
      jbd2: bound shrinker scans by examined checkpoint buffers

Theodore Ts'o (2):
      ext4: enable scoped NOFS when starting a handle in nojournal mode
      jbd2: align h_type and h_line_no in the handle structure on byte boundaries

Xiang Mei (2):
      ext4: fix out-of-bounds read in ext4_read_inline_dir()
      ext4: check dir entry fits before reading the hash trailer in ext4_search_dir()

Yao Kai (1):
      ext4: validate readdir offset before accessing dirent

Yun Zhou (8):
      ext4: fix circular lock dependency in ext4_ext_migrate
      ext4: skip extra isize expansion during mount to prevent deadlock
      ext4: set EXT4_STATE_NO_EXPAND in ext4_evict_inode
      ext4: introduce ext4_put_ea_inode() for safe deferred iput
      ext4: convert all EA inode iput() calls to ext4_put_ea_inode()
      ext4: remove ea_inode_array mechanism in favor of ext4_put_ea_inode()
      fs: add iput_if_not_last() helper
      ext4: validate EA inode i_nlink in ext4_xattr_inode_iget

Zhang Yi (10):
      ext4: use FGP_WRITEBEGIN for tail block zeroing
      ext4: skip tail block zeroing for inline data files
      ext4: check return value of ext4_get_block() in ext4_load_tail_bh()
      ext4: move partial block zeroing earlier in ext4_zero_range()
      ext4: clarify return semantics of ext4_load_tail_bh()
      ext4: track partial-zero outcome per edge in ext4_zero_partial_blocks()
      ext4: zero out whole block for clean edges in WRITE_ZEROES
      ext4: write back partial-zeroed edges in WRITE_ZEROES
      ext4: export converted block count from ext4_convert_unwritten_extents()
      ext4: protect WRITE_ZEROES written extents with orphan list

dardaoe (1):
      Documentation: ext4: fix block_group layout when meta_bg is enabled

 Documentation/filesystems/ext4/group_descr.rst |   9 +-
 fs/buffer.c                                    |   3 +
 fs/ext4/balloc.c                               |   4 +
 fs/ext4/crypto.c                               |  40 ++---
 fs/ext4/dir.c                                  |  20 ++-
 fs/ext4/ext4.h                                 |  40 +++--
 fs/ext4/ext4_jbd2.c                            |  36 +++--
 fs/ext4/ext4_jbd2.h                            |   6 +-
 fs/ext4/extents.c                              | 182 +++++++++++++++++-----
 fs/ext4/fast_commit.c                          |  37 ++---
 fs/ext4/file.c                                 | 151 +++++++++++++------
 fs/ext4/ialloc.c                               |   4 +
 fs/ext4/inline.c                               |  38 +++--
 fs/ext4/inode.c                                | 207 +++++++++++++++++++-------
 fs/ext4/mballoc.c                              |  21 +--
 fs/ext4/migrate.c                              |   3 +-
 fs/ext4/namei.c                                |   2 +
 fs/ext4/orphan.c                               |  17 ++-
 fs/ext4/super.c                                |  32 +++-
 fs/ext4/xattr.c                                | 178 +++++++++++-----------
 fs/ext4/xattr.h                                |   9 +-
 fs/jbd2/checkpoint.c                           |  28 ++--
 fs/jbd2/journal.c                              |   1 +
 include/linux/fs.h                             |  15 ++
 include/linux/jbd2.h                           |  11 +-
 25 files changed, 734 insertions(+), 360 deletions(-)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.