linux/fs/f2fs
Linus Torvalds 92fcf15176 f2fs-for-7.4-rc1
In this round, key enhancements focus on introducing a dedicated metadata
 cache infrastructure and dynamically parameterizing on-disk block layouts
 and geometry macros. Moving meta, node, and compress blocks out of the VFS
 page cache removes the page == block size assumption for metadata, which
 along with dynamic block layout descriptions paves the way for large folio
 and page != block support in the future. We also opt in to multigrain
 timestamps, add bio entry-count throttling for asynchronous write_end_io
 completion, and expose the resizable_tail feature via sysfs.
 
 Alongside these features, critical bug fixes resolve race conditions across
 compression, mmap write faults, checkpoint/shutdown, and filesystem freeze,
 prevent write bio splitting and GC holes on sequential zoned devices, and
 strengthen on-disk sanity checks for SIT/NAT bitmaps, read-only curseg
 entries, and device aliasing. Additional stability patches address online
 resize, roll-forward recovery, atomic file operations, quota handling, and
 dirty inode syncing livelocks.
 
 Enhancement:
  - implement dedicated metadata cache for meta, node, and compress blocks
    to decouple metadata from page cache for large folio and page != block
    support
  - dynamically describe SIT, NAT, orphan, dentry, node, and xattr block
    layouts and parameterize block/sector/node conversion macros
  - opt in to multigrain timestamps
  - introduce max_atc_write_bio_entry_cnt sysfs node
  - expose resizable_tail feature via sysfs
  - avoid unnecessary reads in f2fs_update_meta_block()
 
 Bug fix:
  - compress: force out-place update for all writes, allow pinning empty
    compressed files, and fix truncate/writeback and cache population races
  - zone: avoid bio split and GC target block grab failure on sequential zones
  - quota: convert inline quota files on quotaon, fix flush failure during
    freeze, and restore empty string mount options
  - atomic/mmap: disallow mmap write and data-modifying fallocate on atomic
    files, avoid truncate_inode_pages_final() on live inodes, and fix races in
    f2fs_vm_page_mkwrite()
  - resize/alias: refresh pinned allocation boundary and flush SIT journal
    during resize, and drop pending discards before reserving device alias
  - sanity check: bound SIT/NAT bitmaps by checkpoint pack, check all
    cur_*_segno[] on readonly images, and validate multi-device on device alias
  - recovery/cp: release removed xattr node in roll-forward recovery, invalidate
    curseg on change_curseg() failure, and return -EIO for lost inode block
    after cp_error
  - fix livelock in syncing dirty inodes and preserve APPEND/UPDATE ino entries
  - use bio_in_atomic() in f2fs_{read,write}_end_io()
  - fix 32-bit shift truncation in mount option bitmasks and defragment range
 
 And, the series includes a number of minor bug fixes.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEE00UqedjCtOrGVvQiQBSofoJIUNIFAmrfjdgACgkQQBSofoJI
 UNKNnQ/9Huhqc4w1mMmhMLRgXAdlkPOt7uDt4Pj4iOJXmIqWab3TMj/6Kc2vL0Hz
 ns6JAKsZ2tMLCBmbnvUdYc1Cbn2SiyM+Ewu23IbnqY0J9BwqPGRrexEDUcivkoui
 yYalPskGnujT2U4WicYLfe6AqZWbvkF7X8MbYwtRn6nHIy1OvUsRwjyVodK7a+wy
 P9oqPT/PqabrV2BV3B3GAcYndsI+g1mliAAVkmhATV6ZQB5A+YpnyGqBC9SWauJl
 tEYnTyDskZegs1iISXJQ5BBaT2XKJyhPpjF3SR0U9RE3ZBYV9P3CN3RtiF0Uto8d
 7G1UQ+IYc8Bz1BPY7rN5vM8V8UJ9DE8i3dEOcwC+RqqTA3eKnknpcnc0s+6Lrc5k
 sj7qI/AwJuARO/IU094+o+P0qKF4vedPmSagXMzMNYbgmtYD5oNHbPjZD/IXApQk
 Csnc2QAccrwodQWQC+IUvqbdokvbMhMDWq+oRzS+zztE/DBP/moWn1P2Br3Qhh+f
 906KZZrS7yW+KjaNYuatL918mvdHxbFxsJ5n0OfWuqxuvlxrhI3towOpBrWJyB8n
 sXpP4khvKuBTCPmRCR/PMP5M5QrjFNeDcXv5C0E8clP0iItrQsuic40OLdgC44QS
 8dvIXdUm73DHTeZtl//ZZKI4fTo0/JFVzfsLJMEfFPNAhh+R4LE=
 =/CUz
 -----END PGP SIGNATURE-----

Merge tag 'f2fs-for-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs

Pull f2fs updates from Jaegeuk Kim:
 "In this round, key enhancements focus on introducing a dedicated
  metadata cache infrastructure and dynamically parameterizing on-disk
  block layouts and geometry macros.

  Moving meta, node, and compress blocks out of the VFS page cache
  removes the page == block size assumption for metadata, which along
  with dynamic block layout descriptions paves the way for large folio
  and page != block support in the future.

  We also opt in to multigrain timestamps, add bio entry-count
  throttling for asynchronous write_end_io completion, and expose the
  resizable_tail feature via sysfs.

  Alongside these features, critical bug fixes resolve race conditions
  across compression, mmap write faults, checkpoint/shutdown, and
  filesystem freeze, prevent write bio splitting and GC holes on
  sequential zoned devices, and strengthen on-disk sanity checks for
  SIT/NAT bitmaps, read-only curseg entries, and device aliasing.

  Additional stability patches address online resize, roll-forward
  recovery, atomic file operations, quota handling, and dirty inode
  syncing livelocks.

  Enhancements:
   - implement dedicated metadata cache for meta, node, and compress
     blocks to decouple metadata from page cache for large folio and
     page != block support
   - dynamically describe SIT, NAT, orphan, dentry, node, and xattr
     block layouts and parameterize block/sector/node conversion macros
   - opt in to multigrain timestamps
   - introduce max_atc_write_bio_entry_cnt sysfs node
   - expose resizable_tail feature via sysfs
   - avoid unnecessary reads in f2fs_update_meta_block()

Bug fixes:
   - compress: force out-place update for all writes, allow pinning
     empty compressed files, and fix truncate/writeback and cache
     population races
   - zone: avoid bio split and GC target block grab failure on
     sequential zones
   - quota: convert inline quota files on quotaon, fix flush failure
     during freeze, and restore empty string mount options
   - atomic/mmap: disallow mmap write and data-modifying fallocate on
     atomic files, avoid truncate_inode_pages_final() on live inodes,
     and fix races in f2fs_vm_page_mkwrite()
   - resize/alias: refresh pinned allocation boundary and flush SIT
     journal during resize, and drop pending discards before reserving
     device alias
   - sanity check: bound SIT/NAT bitmaps by checkpoint pack, check all
     cur_*_segno[] on readonly images, and validate multi-device on
     device alias
   - recovery/cp: release removed xattr node in roll-forward recovery,
     invalidate curseg on change_curseg() failure, and return -EIO for
     lost inode block after cp_error
   - fix livelock in syncing dirty inodes and preserve APPEND/UPDATE ino
     entries
   - use bio_in_atomic() in f2fs_{read,write}_end_io()
   - fix 32-bit shift truncation in mount option bitmasks and defragment
     range

  And a number of minor bug fixes"

* tag 'f2fs-for-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (79 commits)
  f2fs: compress: don't overwrite populated compress cache entry
  f2fs: fix to update superblock crc in sanity_check_area_boundary()
  f2fs: fix to fetch ino via ino_of_node() under cache lock
  f2fs: zone: fix to don't fail to grab GC target block on zoned device
  f2fs: don't use truncate_inode_pages_final() on live inodes
  f2fs: expose resizable_tail feature via sysfs
  f2fs: use BIT_ULL for mount option bitmasks
  f2fs: fix submit accounting for IPU writeback
  f2fs: fix to avoid potential reference count leak in do_garbage_collect()
  f2fs: refresh pinned allocation boundary after resize
  f2fs: flush SIT journal during filesystem resize
  f2fs: release a removed xattr node in roll-forward recovery
  f2fs: quota: fix quota flush failure during filesystem freeze
  f2fs: return -EIO for a lost inode block after cp_error
  f2fs: avoid unnecessary reads in f2fs_update_meta_block()
  f2fs: bound the SIT/NAT bitmaps by the checkpoint pack
  f2fs: opt in to multigrain timestamps
  f2fs: fix to use bio_in_atomic() in f2fs_read_end_io()
  f2fs: fix to use bio_in_atomic() in f2fs_write_end_io()
  f2fs: fix to invalidate curseg if change_curseg() fails
  ...
2026-10-27 09:06:00 -10:00
..
acl.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
acl.h f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
cache.c f2fs: cache: count the temporary pins apart from the regular references 2026-10-13 15:39:05 +00:00
cache.h f2fs: cache: wake up f2fs_writeback when exceeding threshold 2026-10-13 15:38:57 +00:00
checkpoint.c f2fs: fix termination of f2fs_sync_meta_caches() 2026-10-13 18:45:03 +00:00
compress.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
data.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
debug.c f2fs: rename page_count with cache_count 2026-09-22 15:21:29 +00:00
dir.c f2fs: cache: use node cache 2026-09-18 01:33:54 +00:00
extent_cache.c f2fs: cache: use node cache 2026-09-18 01:33:54 +00:00
f2fs.h f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
file.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
gc.c f2fs: zone: fix to don't fail to grab GC target block on zoned device 2026-10-20 15:18:36 +00:00
gc.h
hash.c
inline.c f2fs: cache: use node cache 2026-09-18 01:33:54 +00:00
inode.c f2fs: cache: use compress cache 2026-09-18 01:34:12 +00:00
iostat.c f2fs: don't drop the top folio order in the f2fs_iostat tracepoint 2026-08-04 00:18:36 +00:00
iostat.h f2fs: cache: implement metadata cache 2026-09-18 01:32:56 +00:00
Kconfig
Makefile f2fs: cache: implement metadata cache 2026-09-18 01:32:56 +00:00
namei.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
node.c f2fs: fix to fetch ino via ino_of_node() under cache lock 2026-10-26 15:33:18 +00:00
node.h f2fs: cache: shrink meta and node caches in f2fs_balance_fs_bg 2026-10-07 14:16:37 +00:00
recovery.c f2fs: cache: use node cache 2026-09-18 01:33:54 +00:00
segment.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
segment.h f2fs: refresh pinned allocation boundary after resize 2026-10-19 15:32:45 +00:00
shrinker.c f2fs: cache: use compress cache 2026-09-18 01:34:12 +00:00
super.c f2fs: fix to update superblock crc in sanity_check_area_boundary() 2026-10-26 15:33:26 +00:00
sysfs.c f2fs: expose resizable_tail feature via sysfs 2026-10-20 15:18:36 +00:00
verity.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
xattr.c f2fs-for-7.4-rc1 2026-10-27 09:06:00 -10:00
xattr.h f2fs: cache: use node cache 2026-09-18 01:33:54 +00:00