f2fs: add a sysfs node to limit max read extent count per-inode
authorChao Yu <chao@kernel.org>
Fri, 22 Nov 2024 06:50:05 +0000 (14:50 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Sat, 23 Nov 2024 15:48:13 +0000 (15:48 +0000)
commit009a8241a8e5a14ea2dd0b8db42dbf283527dd44
tree74ffd700984a566afdad9a80b1666cc3031e845b
parent3fc5d5a182f6a1f8bd4dc775feb54c369dd2c343
f2fs: add a sysfs node to limit max read extent count per-inode

Quoted:
"at this time, there are still 1086911 extent nodes in this zombie
extent tree that need to be cleaned up.

crash_arm64_sprd_v8.0.3++> extent_tree.node_cnt ffffff80896cc500
  node_cnt = {
    counter = 1086911
  },
"

As reported by Xiuhong, there will be a huge number of extent nodes
in extent tree, it may potentially cause:
- slab memory fragments
- extreme long time shrink on extent tree
- low mapping efficiency

Let's add a sysfs node to limit max read extent count for each inode,
by default, value of this threshold is 10240, it can be updated
according to user's requirement.

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>
Documentation/ABI/testing/sysfs-fs-f2fs
fs/f2fs/extent_cache.c
fs/f2fs/f2fs.h
fs/f2fs/sysfs.c