[PATCH v4 00/18] f2fs: support & optimize large folios for writable files

From: Nanzhe Zhao

Date: Tue Oct 13 2026 - 07:56:38 EST


From: Nanzhe Zhao <zhaonanzhe@xxxxxxxxxx>

This series supports large folios for most readable/writable files
in buffered I/O paths, including normal files, block-layer encrypted
files, and atomic files except for inline-data files, compressed files,
and quota files.

It also extends f2fs_folio_state to coexist with f2fs page-private
flags and to handle large folio write path and partial truncate of
large folios correctly.

Benchmark details can be found in the RFC v2 cover letter [1].

Changes in v4:
- Rebased onto linux-next next-20261012 (4eb2586bd40d); its f2fs part
is the f2fs dev branch.
- Added "f2fs: read i_size once in f2fs_vm_page_mkwrite" as a
prerequisite (also sent separately).
- "f2fs: remove mappedtodisk flag usage in mmap write path" is kept as
a prerequisite.
- Link to v3: [2]

Patches 1 and 2 are prerequisites for the large folio work. They are
also posted independently as bug fixes, and are kept in this series to
make it self-contained for the sashiko review.

Many thanks to Chao and Daeho for your extensive reviews and valuable
suggestions!

[1] https://lore.kernel.org/r/20260622160830.324455-1-zhaonanzhe@xxxxxxxxxx
[2] https://lore.kernel.org/linux-f2fs-devel/20261009161224.4163796-1-zhaonanzhe@xxxxxxxxxx/

Nanzhe Zhao (18):
f2fs: read i_size once in f2fs_vm_page_mkwrite
f2fs: remove mappedtodisk flag usage in mmap write path
f2fs: extend folio state for large folio write path
f2fs: carry subpage offset and count in write IO
f2fs: support regular file buffered writes on large folios
f2fs: support atomic file large folios buffered write
f2fs: support large folio writeback
f2fs: account large folio dirty data at block granularity
f2fs: prepare mmap write faults for large folios
f2fs: make GC migration large-folio aware
f2fs: optimize small block size large folio read
f2fs: support partial uptodate large folio read
f2fs: handle partial truncate of large folio dirty subpages
f2fs: wait for folio writeback before ffs_detach_free
f2fs: fix zeroing paths for large folios
f2fs: handle block cloning within the same large folio
f2fs: allow large folio support to writeable files
f2fs: make compressed files compatible with large folio

Documentation/filesystems/f2fs.rst | 10 +
fs/f2fs/checkpoint.c | 40 +-
fs/f2fs/compress.c | 7 +-
fs/f2fs/data.c | 1425 +++++++++++++++++++++++++---
fs/f2fs/dir.c | 2 +-
fs/f2fs/f2fs.h | 173 +++-
fs/f2fs/file.c | 252 +++--
fs/f2fs/gc.c | 38 +-
fs/f2fs/inline.c | 9 +-
fs/f2fs/inode.c | 4 +-
fs/f2fs/namei.c | 1 +
fs/f2fs/node.c | 2 +-
fs/f2fs/segment.c | 3 +-
13 files changed, 1706 insertions(+), 260 deletions(-)

--
2.43.0