mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
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
...
|
||
|---|---|---|
| .. | ||
| acl.c | ||
| acl.h | ||
| cache.c | ||
| cache.h | ||
| checkpoint.c | ||
| compress.c | ||
| data.c | ||
| debug.c | ||
| dir.c | ||
| extent_cache.c | ||
| f2fs.h | ||
| file.c | ||
| gc.c | ||
| gc.h | ||
| hash.c | ||
| inline.c | ||
| inode.c | ||
| iostat.c | ||
| iostat.h | ||
| Kconfig | ||
| Makefile | ||
| namei.c | ||
| node.c | ||
| node.h | ||
| recovery.c | ||
| segment.c | ||
| segment.h | ||
| shrinker.c | ||
| super.c | ||
| sysfs.c | ||
| verity.c | ||
| xattr.c | ||
| xattr.h | ||