linux/fs/f2fs
Chao Yu 3fc5d5a182 f2fs: fix to shrink read extent node in batches
We use rwlock to protect core structure data of extent tree during
its shrink, however, if there is a huge number of extent nodes in
extent tree, during shrink of extent tree, it may hold rwlock for
a very long time, which may trigger kernel hang issue.

This patch fixes to shrink read extent node in batches, so that,
critical region of the rwlock can be shrunk to avoid its extreme
long time hold.

Reported-by: Xiuhong Wang <xiuhong.wang@unisoc.com>
Closes: https://lore.kernel.org/linux-f2fs-devel/20241112110627.1314632-1-xiuhong.wang@unisoc.com/
Signed-off-by: Xiuhong Wang <xiuhong.wang@unisoc.com>
Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2024-11-21 16:16:54 +00:00
..
acl.c f2fs: Use struct_size() to improve f2fs_acl_clone() 2024-10-14 20:04:57 +00:00
acl.h fs: port ->set_acl() to pass mnt_idmap 2023-01-19 09:24:27 +01:00
checkpoint.c f2fs: fix to avoid potential deadlock in f2fs_record_stop_reason() 2024-11-01 01:24:41 +00:00
compress.c f2fs: get rid of page->index 2024-09-06 23:04:48 +00:00
data.c f2fs: fix to requery extent which cross boundary of inquiry 2024-11-21 16:12:30 +00:00
debug.c f2fs: fix typos 2024-11-01 01:24:41 +00:00
dir.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
extent_cache.c f2fs: fix to shrink read extent node in batches 2024-11-21 16:16:54 +00:00
f2fs.h f2fs: fix changing cursegs if recovery fails on zoned device 2024-11-21 16:13:53 +00:00
file.c f2fs: fix to avoid forcing direct write to use buffered IO on inline_data inode 2024-11-05 18:30:22 +00:00
gc.c f2fs: fix to avoid use GC_AT when setting gc_mode as GC_URGENT_LOW or GC_URGENT_MID 2024-11-01 01:24:41 +00:00
gc.h f2fs: decrease spare area for pinned files for zoned devices 2024-11-01 01:19:00 +00:00
hash.c f2fs: don't use casefolded comparison for "." and ".." 2022-05-17 11:19:23 -07:00
inline.c f2fs: convert f2fs_write_inline_data() to use folio 2024-09-06 23:04:47 +00:00
inode.c f2fs: introduce device aliasing file 2024-11-01 01:19:00 +00:00
iostat.c f2fs: add async reset zone command support 2023-06-12 13:04:09 -07:00
iostat.h f2fs: use iostat_lat_type directly as a parameter in the iostat_update_and_unbind_ctx() 2023-02-07 10:39:28 -08:00
Kconfig fs: add CONFIG_BUFFER_HEAD 2023-08-02 09:13:09 -06:00
Makefile f2fs: separate out iostat feature 2021-08-23 10:25:51 -07:00
namei.c f2fs: get rid of online repaire on corrupted directory 2024-09-11 03:30:27 +00:00
node.c f2fs: print message if fscorrupted was found in f2fs_new_node_page() 2024-11-21 16:16:39 +00:00
node.h f2fs: use BLKS_PER_SEG, BLKS_PER_SEC, and SEGS_PER_SEC 2024-02-27 09:41:12 -08:00
recovery.c f2fs: fix changing cursegs if recovery fails on zoned device 2024-11-21 16:13:53 +00:00
segment.c f2fs: fix changing cursegs if recovery fails on zoned device 2024-11-21 16:13:53 +00:00
segment.h f2fs: clean up the unused variable additional_reserved_segments 2024-11-01 01:24:41 +00:00
shrinker.c f2fs: add block_age-based extent cache 2022-12-12 14:53:56 -08:00
super.c f2fs: clear SBI_POR_DOING before initing inmem curseg 2024-11-21 16:14:07 +00:00
sysfs.c f2fs: clean up the unused variable additional_reserved_segments 2024-11-01 01:24:41 +00:00
verity.c f2fs-6.12-rc1 2024-09-24 15:12:38 -07:00
xattr.c f2fs: reduce expensive checkpoint trigger frequency 2024-08-15 15:26:39 +00:00
xattr.h f2fs: move f2fs_xattr_handlers and f2fs_xattr_handler_map to .rodata 2023-10-09 16:24:18 +02:00