[GIT PULL] ext4 updates for v6.15-rc1

From: Theodore Ts'o
Date: Thu Mar 27 2025 - 12:41:26 EST


The following changes since commit a64dcfb451e254085a7daee5fe51bf22959d52d3:

Linux 6.14-rc2 (2025-02-09 12:45:03 -0800)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git tags/ext4-for_linus-6.15-rc1

for you to fetch changes up to d5e206778e96e8667d3bde695ad372c296dc9353:

ext4: fix OOB read when checking dotdot dir (2025-03-21 01:33:11 -0400)

----------------------------------------------------------------
Ext4 bug fixes and cleanups, including:

* hardening against maliciously fuzzed file systems
* backwards compatibility for the brief period when we attempted to
ignore zero-width characters
* avoid potentially BUG'ing if there is a file system corruption found
during the file system unmount
* fix free space reporting by statfs when project quotas are enabled
and the free space is less than the remaining project quota

Also improve performance when replaying a journal with a very large
number of revoke records (applicable for Lustre volumes).

----------------------------------------------------------------
Acs, Jakub (1):
ext4: fix OOB read when checking dotdot dir

Baokun Li (18):
ext4: replace opencoded ext4_end_io_end() in ext4_put_io_end()
ext4: do not convert the unwritten extents if data writeback fails
ext4: reject the 'data_err=abort' option in nojournal mode
ext4: extract ext4_has_journal_option() from __ext4_fill_super()
ext4: abort journal on data writeback failure if in data_err=abort mode
jbd2: drop JBD2_ABORT_ON_SYNCDATA_ERR
ext4: update the descriptions of data_err=abort and data_err=ignore
ext4: remove unused member 'i_unwritten' from 'ext4_inode_info'
ext4: pack holes in ext4_inode_info
ext4: convert EXT4_FLAGS_* defines to enum
ext4: add EXT4_FLAGS_EMERGENCY_RO bit
ext4: add ext4_emergency_state() helper function
ext4: add more ext4_emergency_state() checks around sb_rdonly()
ext4: correct behavior under errors=remount-ro mode
ext4: show 'emergency_ro' when EXT4_FLAGS_EMERGENCY_RO is set
ext4: show 'shutdown' hint when ext4 is forced to shutdown
ext4: goto right label 'out_mmap_sem' in ext4_setattr()
jbd2: remove jbd2_journal_unfile_buffer()

Bhupesh (1):
ext4: ignore xattrs past end

Charles Han (1):
ext4: fix potential null dereference in ext4 kunit test

Christian Göttsche (1):
ext4: reorder capability check last

Diangang Li (1):
ext4: clear DISCARD flag if device does not support discard

Eric Biggers (2):
ext4: remove redundant function ext4_has_metadata_csum
jbd2: remove redundant function jbd2_journal_has_csum_v2or3_feature

Ethan Carter Edwards (1):
ext4: hash: simplify kzalloc(n * 1, ...) to kzalloc(n, ...)

Jan Kara (4):
jbd2: Avoid long replay times due to high number or revoke blocks
ext4: verify fast symlink length
jbd2: remove wrong sb->s_sequence check
jbd2: do not try to recover wiped journal

Julian Sun (5):
ext4: Remove a redundant return statement
ext4: Don't set EXT4_STATE_MAY_INLINE_DATA for ea inodes
ext4: Introduce a new helper function ext4_generic_write_inline_data()
ext4: Replace ext4_da_write_inline_data_begin() with ext4_generic_write_inline_data().
ext4: Refactor out ext4_try_to_write_inline_data()

Kemeng Shi (12):
ext4: remove unused ext4 journal callback
jbd2: remove unused transaction->t_private_list
ext4: remove unneeded forward declaration
jbd2: remove unused h_jdata flag of handle
jbd2: remove unused return value of jbd2_journal_cancel_revoke
jbd2: remove unused return value of do_readahead
jbd2: remove stale comment of update_t_max_wait
jbd2: correct stale function name in comment
jbd2: Correct stale comment of release_buffer_page
ext4: add missing brelse() for bh2 in ext4_dx_add_entry()
ext4: remove unneeded forward declaration in namei.c
ext4: remove unused input "inode" in ext4_find_dest_de

Matthew Wilcox (Oracle) (1):
ext4: remove references to bh->b_page

Nicolas Bretz (1):
ext4: on a remount, only log the ro or r/w state when it has changed

Ojaswin Mujoo (4):
ext4: protect ext4_release_dquot against freezing
ext4: define ext4_journal_destroy wrapper
ext4: avoid journaling sb update on error if journal is destroying
ext4: Make sb update interval tunable

Theodore Ts'o (2):
ext4: introduce linear search for dentries
ext4: don't over-report free space or inodes in statvfs

Ye Bin (2):
ext4: introduce ITAIL helper
ext4: fix out-of-bound read in ext4_xattr_inode_dec_ref_all()

Zhang Yi (13):
ext4: remove writable userspace mappings before truncating page cache
ext4: don't explicit update times in ext4_fallocate()
ext4: don't write back data before punch hole in nojournal mode
ext4: refactor ext4_punch_hole()
ext4: refactor ext4_zero_range()
ext4: refactor ext4_collapse_range()
ext4: refactor ext4_insert_range()
ext4: factor out ext4_do_fallocate()
ext4: move out inode_lock into ext4_fallocate()
ext4: move out common parts into ext4_fallocate()
jbd2: fix off-by-one while erasing journal
jbd2: add a missing data flush during file and fs synchronization
ext4: correct the error handle in ext4_fallocate()

Zizhi Wo (1):
ext4: update the comment about mb_optimize_scan

Documentation/admin-guide/ext4.rst | 7 +-
Documentation/filesystems/journalling.rst | 4 +-
fs/ext4/balloc.c | 4 +-
fs/ext4/bitmap.c | 8 +-
fs/ext4/dir.c | 7 +-
fs/ext4/ext4.h | 94 ++++----
fs/ext4/ext4_jbd2.c | 12 +-
fs/ext4/ext4_jbd2.h | 113 +++------
fs/ext4/extents.c | 531 ++++++++++++++++---------------------------
fs/ext4/extents_status.c | 1 -
fs/ext4/file.c | 27 ++-
fs/ext4/fsync.c | 12 +-
fs/ext4/hash.c | 2 +-
fs/ext4/ialloc.c | 9 +-
fs/ext4/inline.c | 205 ++++++-----------
fs/ext4/inode.c | 288 +++++++++++++----------
fs/ext4/ioctl.c | 13 +-
fs/ext4/mballoc-test.c | 2 +
fs/ext4/mballoc.c | 8 +-
fs/ext4/mmp.c | 6 +-
fs/ext4/namei.c | 117 +++++-----
fs/ext4/orphan.c | 2 +-
fs/ext4/page-io.c | 75 ++++--
fs/ext4/resize.c | 4 +-
fs/ext4/super.c | 267 ++++++++++++----------
fs/ext4/sysfs.c | 4 +
fs/ext4/xattr.c | 47 ++--
fs/ext4/xattr.h | 10 +
fs/jbd2/commit.c | 10 +-
fs/jbd2/journal.c | 34 +--
fs/jbd2/recovery.c | 80 +++++--
fs/jbd2/revoke.c | 21 +-
fs/jbd2/transaction.c | 21 +-
include/linux/fs.h | 10 +-
include/linux/jbd2.h | 24 +-
35 files changed, 967 insertions(+), 1112 deletions(-)