[GIT PULL] f2fs update for 5.9-rc1

From: Jaegeuk Kim
Date: Mon Aug 10 2020 - 15:27:47 EST

Hi Linus,

Could you please consider this pull request?


The following changes since commit b29482fde649c72441d5478a4ea2c52c56d97a5e:

Merge branch 'work.epoll' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs (2020-06-10 18:09:13 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 828add774f0d2bf930cdeca6c982c1fbcdd846bb:

f2fs: prepare a waiter before entering io_schedule (2020-08-03 20:54:58 -0700)


In this round, we've added two small interfaces, 1) GC_URGENT_LOW mode for
performance, and 2) F2FS_IOC_SEC_TRIM_FILE ioctl for security. The new GC
mode allows Android to run some lower priority GCs in background, while new
ioctl discards user information without race condition when the account is
removed. In addition, some patches were merged to address latency-related
issues. We've fixed some compression-related bug fixes as well as edge race

- add GC_URGENT_LOW mode in gc_urgent
- introduce F2FS_IOC_SEC_TRIM_FILE ioctl
- bypass racy readahead to improve read latencies
- shrink node_write lock coverage to avoid long latency

Bug fix:
- fix missing compression flag control, i_size, and mount option
- fix deadlock between quota writes and checkpoint
- remove inode eviction path in synchronous path to avoid deadlock
- fix to wait GCed compressed page writeback
- fix a kernel panic in f2fs_is_compressed_page
- check page dirty status before writeback
- wait page writeback before update in node page write flow
- fix a race condition between f2fs_write_end_io and f2fs_del_fsync_node_entry

We've added some minor sanity checks and refactored trivial code blocks for
better readability and debugging information.

Chao Yu (21):
f2fs: add prefix for exported symbols
f2fs: fix to document reserved special compression extension
f2fs: shrink node_write lock coverage
f2fs: clean up parameter of f2fs_allocate_data_block()
f2fs: show more debug info for per-temperature log
f2fs: fix to wait page writeback before update
f2fs: fix wrong return value of f2fs_bmap_compress()
f2fs: support to trace f2fs_bmap()
f2fs: support to trace f2fs_fiemap()
f2fs: fix to check page dirty status before writeback
f2fs: split f2fs_allocate_new_segments()
f2fs: fix return value of move_data_block()
f2fs: fix to wait GCed compressed page writeback
f2fs: fix wrong description of compress feature in f2fs.rst
f2fs: fix error path in do_recover_data()
f2fs: don't keep meta inode pages used for compressed block migration
f2fs: compress: fix to avoid memory leak on cc->cpages
f2fs: compress: fix to update isize when overwriting compressed file
f2fs: compress: delay temp page allocation
f2fs: compress: add sanity check during compressed cluster read
f2fs: compress: disable compression mount option if compression is off

Daeho Jeong (3):
f2fs: add GC_URGENT_LOW mode in gc_urgent
f2fs: add F2FS_IOC_SEC_TRIM_FILE ioctl
f2fs: make file immutable even if releasing zero compression block

Dehe Gu (1):
f2fs: remove write attribute of main_blkaddr sysfs node

Denis Efremov (1):
f2fs: use kfree() instead of kvfree() to free superblock data

Eric Biggers (1):
f2fs: use generic names for generic ioctls

Jack Qiu (4):
f2fs: get the right gc victim section when section has several segments
f2fs: space related cleanup
f2fs: correct comment of f2fs_exist_written_data
f2fs: use macro instead of f2fs verity version

Jaegeuk Kim (5):
f2fs: avoid checkpatch error
f2fs: avoid readahead race condition
f2fs: should avoid inode eviction in synchronous path
f2fs: fix deadlock between quota writes and checkpoint
f2fs: prepare a waiter before entering io_schedule

Jia Yang (2):
f2fs: add parameter op_flag in f2fs_submit_page_read()
f2fs: Change the type of f2fs_flush_inline_data() to void

Li Guifu (1):
f2fs: fix use-after-free issue

Lihong Kou (1):
f2fs: make trace enter and end in pairs for unlink

Liu Song (2):
f2fs: fix typo in comment of f2fs_do_add_link
f2fs: remove useless parameter of __insert_free_nid()

Qilong Zhang (1):
f2fs: add f2fs_gc exception handle in f2fs_ioc_gc_range

Randy Dunlap (1):
f2fs: segment.h: delete a duplicated word

Wang Xiaojun (2):
f2fs: use kfree() to free variables allocated by match_strdup()
f2fs: remove the unused compr parameter

Wei Fang (1):
f2fs: remove useless truncate in f2fs_collapse_range()

Wuyun Zhao (1):
f2fs: fix a race condition between f2fs_write_end_io and f2fs_del_fsync_node_entry

Yu Changchun (1):
f2fs: fix an oops in f2fs_is_compressed_page

Yubo Feng (1):
f2fs: lost matching-pair of trace in f2fs_truncate_inode_blocks

Yufen Yu (1):
f2fs: replace test_and_set/clear_bit() with set/clear_bit()

Zhihao Cheng (1):
f2fs: update_sit_entry: Make the judgment condition of f2fs_bug_on more intuitive

Documentation/ABI/testing/sysfs-fs-f2fs | 4 +-
Documentation/filesystems/f2fs.rst | 6 +-
fs/f2fs/checkpoint.c | 15 +-
fs/f2fs/compress.c | 89 ++++++++---
fs/f2fs/data.c | 93 ++++++++---
fs/f2fs/debug.c | 64 ++++++--
fs/f2fs/dir.c | 2 +-
fs/f2fs/extent_cache.c | 18 +--
fs/f2fs/f2fs.h | 81 +++++-----
fs/f2fs/file.c | 264 +++++++++++++++++++++++++++-----
fs/f2fs/gc.c | 75 +++++----
fs/f2fs/inline.c | 21 ++-
fs/f2fs/inode.c | 4 +-
fs/f2fs/namei.c | 18 ++-
fs/f2fs/node.c | 38 +++--
fs/f2fs/recovery.c | 12 +-
fs/f2fs/segment.c | 129 +++++++++++-----
fs/f2fs/segment.h | 10 +-
fs/f2fs/super.c | 68 ++++----
fs/f2fs/sysfs.c | 23 ++-
fs/f2fs/verity.c | 6 +-
fs/f2fs/xattr.c | 4 +-
include/trace/events/f2fs.h | 63 ++++++++
23 files changed, 815 insertions(+), 292 deletions(-)