[GIT PULL] f2fs update for 6.10-rc1

From: Jaegeuk Kim
Date: Mon May 20 2024 - 15:37:12 EST


Hi Linus,

Could you please consider this pull reuqest?

Thanks,

The following changes since commit 928a87efa42302a23bb9554be081a28058495f22:

Merge tag 'gfs2-v6.8-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 (2024-03-25 10:53:39 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/f2fs-for-6.10.rc1

for you to fetch changes up to 16409fdbb8828d7ae829bc4ac4e09e7ff02f8878:

f2fs: initialize last_block_in_bio variable (2024-05-15 04:18:40 +0000)

----------------------------------------------------------------
f2fs update for 6.10-rc1

In this round, we've tried to address some performance issues on zoned storage
such as direct IO and write_hints. In addition, we've migrated some IO paths
using folio. Meanwhile, there are multiple bug fixes in the compression paths,
sanity check conditions, and error handlers.

Enhancement:
- allow direct io of pinned files for zoned storage
- assign the write hint per stream by default
- convert read paths and test_writeback to folio
- avoid allocating WARM_DATA segment for direct IO

Bug fix:
- fix false alarm on invalid block address
- fix to add missing iput() in gc_data_segment()
- fix to release node block count in error path of f2fs_new_node_page()
- compress: don't allow unaligned truncation on released compress inode
- compress: fix to cover {reserve,release}_compress_blocks() w/ cp_rwsem lock
- compress: fix error path of inc_valid_block_count()
- compress: fix to update i_compr_blocks correctly
- fix block migration when section is not aligned to pow2
- don't trigger OPU on pinfile for direct IO
- fix to do sanity check on i_xattr_nid in sanity_check_inode()
- write missing last sum blk of file pinning section
- clear writeback when compression failed
- fix to adjust appropirate defragment pg_end

As usual, there are several minor code clean-ups, and fixes to manage missing
corner cases in the error paths.

----------------------------------------------------------------
Chao Yu (30):
f2fs: support .shutdown in f2fs_sops
f2fs: fix to detect inconsistent nat entry during truncation
f2fs: introduce map_is_mergeable() for cleanup
f2fs: multidev: fix to recognize valid zero block address
f2fs: support to map continuous holes or preallocated address
f2fs: fix to wait on page writeback in __clone_blkaddrs()
f2fs: compress: fix to relocate check condition in f2fs_{release,reserve}_compress_blocks()
f2fs: compress: fix to relocate check condition in f2fs_ioc_{,de}compress_file()
f2fs: fix to relocate check condition in f2fs_fallocate()
f2fs: fix to check pinfile flag in f2fs_move_file_range()
f2fs: convert f2fs_mpage_readpages() to use folio
f2fs: convert f2fs_read_single_page() to use folio
f2fs: convert f2fs_read_inline_data() to use folio
f2fs: convert f2fs__page tracepoint class to use folio
f2fs: fix comment in sanity_check_raw_super()
f2fs: remove unnecessary block size check in init_f2fs_fs()
f2fs: fix to avoid allocating WARM_DATA segment for direct IO
f2fs: fix to do sanity check on i_xattr_nid in sanity_check_inode()
f2fs: zone: fix to don't trigger OPU on pinfile for direct IO
f2fs: use f2fs_{err,info}_ratelimited() for cleanup
f2fs: remove unused GC_FAILURE_PIN
f2fs: fix to limit gc_pin_file_threshold
f2fs: check validation of fault attrs in f2fs_build_fault_attr()
f2fs: compress: fix to update i_compr_blocks correctly
f2fs: compress: fix typo in f2fs_reserve_compress_blocks()
f2fs: compress: fix error path of inc_valid_block_count()
f2fs: compress: fix to cover {reserve,release}_compress_blocks() w/ cp_rwsem lock
f2fs: fix to release node block count in error path of f2fs_new_node_page()
f2fs: compress: don't allow unaligned truncation on released compress inode
f2fs: fix to add missing iput() in gc_data_segment()

Daeho Jeong (4):
f2fs: write missing last sum blk of file pinning section
f2fs: prevent writing without fallocate() for pinned files
f2fs: allow direct io of pinned files for zoned storage
f2fs: allow dirty sections with zero valid block for checkpoint disabled

Jaegeuk Kim (5):
f2fs: don't set RO when shutting down f2fs
f2fs: use folio_test_writeback
f2fs: assign the write hint per stream by default
f2fs: clear writeback when compression failed
f2fs: fix false alarm on invalid block address

Nathan Chancellor (1):
f2fs: Add inline to f2fs_build_fault_attr() stub

Wenjie Qi (1):
f2fs: fix zoned block device information initialization

Wu Bo (3):
f2fs: use helper to print zone condition
f2fs: fix block migration when section is not aligned to pow2
f2fs: initialize last_block_in_bio variable

Yeongjin Gil (1):
f2fs: Prevent s_writer rw_sem count mismatch in f2fs_evict_inode

Yifan Zhao (1):
f2fs: remove redundant parameter in is_next_segment_free()

Yunlei He (1):
f2fs: remove clear SB_INLINECRYPT flag in default_options

Zhiguo Niu (3):
f2fs: fix to adjust appropirate defragment pg_end
f2fs: add REQ_TIME time update for some user behaviors
f2fs: fix some ambiguous comments

Documentation/ABI/testing/sysfs-fs-f2fs | 2 +-
Documentation/filesystems/f2fs.rst | 29 ++++
fs/f2fs/checkpoint.c | 13 +-
fs/f2fs/compress.c | 96 ++++++++----
fs/f2fs/data.c | 231 ++++++++++++++++------------
fs/f2fs/f2fs.h | 57 +++----
fs/f2fs/file.c | 256 ++++++++++++++++++++------------
fs/f2fs/gc.c | 11 +-
fs/f2fs/gc.h | 1 +
fs/f2fs/inline.c | 36 ++---
fs/f2fs/inode.c | 22 ++-
fs/f2fs/node.c | 20 ++-
fs/f2fs/recovery.c | 3 +-
fs/f2fs/segment.c | 132 +++++++++++-----
fs/f2fs/super.c | 80 +++++++---
fs/f2fs/sysfs.c | 21 ++-
include/linux/f2fs_fs.h | 10 +-
include/trace/events/f2fs.h | 42 +++---
18 files changed, 688 insertions(+), 374 deletions(-)