From: Chen Linxuan Date: Thu, 16 Jan 2025 08:33:02 +0000 (+0800) Subject: erofs: return SHRINK_EMPTY if no objects to free X-Git-Tag: v6.14-rc1~86^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=41fb0fabc40113769ce53ea85ffd1f4bc87ae03a;p=thirdparty%2Fkernel%2Flinux.git erofs: return SHRINK_EMPTY if no objects to free Comments in file include/linux/shrinker.h says that `count_objects` of `struct shrinker` should return SHRINK_EMPTY when there are no objects to free. > If there are no objects to free, it should return SHRINK_EMPTY, > while 0 is returned in cases of the number of freeable items cannot > be determined or shrinker should skip this cache for this time > (e.g., their number is below shrinkable limit). Signed-off-by: Chen Linxuan Reviewed-by: Gao Xiang Link: https://lore.kernel.org/r/149E6E64B5B6B5E8+20250116083303.199817-1-chenlinxuan@uniontech.com [ Gao Xiang: should have no impact since it's not memcg-aware. ] Signed-off-by: Gao Xiang --- diff --git a/fs/erofs/zutil.c b/fs/erofs/zutil.c index 0dd65cefce33e..83fbcab70a920 100644 --- a/fs/erofs/zutil.c +++ b/fs/erofs/zutil.c @@ -243,7 +243,7 @@ void erofs_shrinker_unregister(struct super_block *sb) static unsigned long erofs_shrink_count(struct shrinker *shrink, struct shrink_control *sc) { - return atomic_long_read(&erofs_global_shrink_cnt); + return atomic_long_read(&erofs_global_shrink_cnt) ?: SHRINK_EMPTY; } static unsigned long erofs_shrink_scan(struct shrinker *shrink,