[GIT PULL] f2fs update for 5.17-rc1

From: Jaegeuk Kim
Date: Tue Jan 18 2022 - 20:11:00 EST


Hi Linus,

Could you please consider this pull request?

Thanks as always,

The following changes since commit 8ab774587903771821b59471cc723bba6d893942:

Merge tag 'trace-v5.16-5' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace (2021-11-14 19:07:19 -0800)

are available in the Git repository at:

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

for you to fetch changes up to 5fed0be8583f08c1548b4dcd9e5ee0d1133d0730:

f2fs: do not allow partial truncation on pinned file (2022-01-10 09:05:09 -0800)

----------------------------------------------------------------
f2fs-for-5.17-rc1

In this round, we've tried to address some performance issues in f2fs_checkpoint
and direct IO flows. Also, there was a work to enhance the page cache management
used for compression. Other than them, we've done typical work including sysfs,
code clean-ups, tracepoint, sanity check, in addition to bug fixes on corner
cases.

Enhancement:
- use iomap for direct IO
- try to avoid lock contention to improve f2fs_ckpt speed
- avoid unnecessary memory allocation in compression flow
- POSIX_FADV_DONTNEED drops the page cache containing compression pages
- add some sysfs entries (gc_urgent_high_remaining, pending_discard)

Bug fix:
- try not to expose unwritten blocks to user by DIO
: this was added to avoid merge conflict; another patch is coming to address
other missing case.
- relax minor error condition for file pinning feature used in Android OTA
- fix potential deadlock case in compression flow
- should not truncate any block on pinned file

In addition, we've done some code clean-ups and tracepoint/sanity check
improvement.

----------------------------------------------------------------
Chao Yu (9):
f2fs: fix to do sanity check on inode type during garbage collection
f2fs: fix to avoid panic in is_alive() if metadata is inconsistent
f2fs: fix to do sanity check in is_alive()
f2fs: fix to do sanity check on last xattr entry in __f2fs_setxattr()
f2fs: clean up __find_inline_xattr() with __find_xattr()
f2fs: support fault injection to f2fs_trylock_op()
f2fs: fix to check available space of CP area correctly in update_ckpt_flags()
f2fs: fix to reserve space for IO align feature
f2fs: don't drop compressed page cache in .{invalidate,release}page

Daeho Jeong (1):
f2fs: add gc_urgent_high_remaining sysfs node

Eric Biggers (5):
f2fs: rework write preallocations
f2fs: reduce indentation in f2fs_file_write_iter()
f2fs: fix the f2fs_file_write_iter tracepoint
f2fs: implement iomap operations
f2fs: use iomap for direct I/O

Fengnan Chang (4):
f2fs: compress: reduce one page array alloc and free when write compressed page
f2fs: fix remove page failed in invalidate compress pages
f2fs: support POSIX_FADV_DONTNEED drop compressed page cache
f2fs: remove redunant invalidate compress pages

Hyeong-Jun Kim (1):
f2fs: compress: fix potential deadlock of compress file

Jaegeuk Kim (8):
f2fs: do not expose unwritten blocks to user by DIO
f2fs: show more DIO information in tracepoint
f2fs: show number of pending discard commands
f2fs: avoid duplicate call of mark_inode_dirty
f2fs: avoid EINVAL by SBI_NEED_FSCK when pinning a file
f2fs: avoid down_write on nat_tree_lock during checkpoint
f2fs: do not bother checkpoint by f2fs_get_node_info
f2fs: do not allow partial truncation on pinned file

Yang Li (1):
f2fs: Simplify bool conversion

Documentation/ABI/testing/sysfs-fs-f2fs | 12 +
Documentation/filesystems/f2fs.rst | 1 +
fs/f2fs/Kconfig | 1 +
fs/f2fs/checkpoint.c | 6 +-
fs/f2fs/compress.c | 84 +++---
fs/f2fs/data.c | 351 +++++-----------------
fs/f2fs/f2fs.h | 43 ++-
fs/f2fs/file.c | 509 ++++++++++++++++++++++++++------
fs/f2fs/gc.c | 26 +-
fs/f2fs/inline.c | 4 +-
fs/f2fs/inode.c | 18 +-
fs/f2fs/iostat.c | 40 ++-
fs/f2fs/node.c | 23 +-
fs/f2fs/recovery.c | 2 +-
fs/f2fs/segment.c | 2 +-
fs/f2fs/segment.h | 3 +-
fs/f2fs/super.c | 46 +++
fs/f2fs/sysfs.c | 26 +-
fs/f2fs/xattr.c | 40 +--
include/trace/events/f2fs.h | 27 +-
20 files changed, 759 insertions(+), 505 deletions(-)