linux/fs/f2fs
Hou Pengyang f417a02fe6 f2fs: add ovp valid_blocks check for bg gc victim to fg_gc
commit e93b986525 upstream.

For foreground gc, greedy algorithm should be adapted, which makes
this formula work well:

	(2 * (100 / config.overprovision + 1) + 6)

But currently, we fg_gc have a prior to select bg_gc victim segments to gc
first, these victims are selected by cost-benefit algorithm, we can't guarantee
such segments have the small valid blocks, which may destroy the f2fs rule, on
the worstest case, would consume all the free segments.

This patch fix this by add a filter in check_bg_victims, if segment's has # of
valid blocks over overprovision ratio, skip such segments.

Signed-off-by: Hou Pengyang <houpengyang@huawei.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
[bwh: Backported to 3.16:
 - In get_victim_by_default(), use continue rather than goto
 - Adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2017-06-05 21:17:15 +01:00
..
acl.c posix_acl: Clear SGID bit when setting file permissions 2016-11-20 01:17:38 +00:00
acl.h f2fs: use generic posix ACL infrastructure 2014-01-25 23:58:19 -05:00
checkpoint.c f2fs updates for v3.16 2014-06-09 19:11:44 -07:00
data.c f2fs: fix to report newly allocate region as extent 2014-06-23 10:05:07 +09:00
debug.c f2fs: set ->owner for debugfs status file's file_operations 2017-03-16 02:26:25 +00:00
dir.c f2fs: fix error path in init_inode_metadata 2014-07-09 05:58:50 -07:00
f2fs.h f2fs: add ovp valid_blocks check for bg gc victim to fg_gc 2017-06-05 21:17:15 +01:00
file.c fs: Give dentry to inode_change_ok() instead of inode 2017-02-23 03:53:52 +00:00
gc.c f2fs: add ovp valid_blocks check for bg gc victim to fg_gc 2017-06-05 21:17:15 +01:00
gc.h f2fs: add a sysfs entry to control max_victim_search 2014-01-08 13:45:08 +09:00
hash.c f2fs: unify string length declarations and usage 2012-12-28 11:27:53 +09:00
inline.c f2fs: avoid grab_cache_page_write_begin for data pages 2014-05-07 10:21:58 +09:00
inode.c f2fs: check lower bound nid value in check_nid_range 2014-07-09 05:58:08 -07:00
Kconfig f2fs: introduce CONFIG_F2FS_CHECK_FS for BUG_ON control 2013-10-29 15:43:01 +09:00
Makefile f2fs: key functions to handle inline data 2013-12-26 20:40:09 +09:00
namei.c f2fs: do checkpoint for the renamed inode 2014-07-09 05:59:31 -07:00
node.c f2fs: check bdi->dirty_exceeded when trying to skip data writes 2014-07-09 05:59:45 -07:00
node.h f2fs: fix checkpatch warning 2014-05-07 10:21:59 +09:00
recovery.c f2fs: avoid not to call remove_dirty_inode 2014-06-07 03:18:36 +09:00
segment.c f2fs: use for_each_set_bit to simplify the code 2017-06-05 21:17:15 +01:00
segment.h f2fs: add ovp valid_blocks check for bg gc victim to fg_gc 2017-06-05 21:17:15 +01:00
super.c f2fs: check lower bound nid value in check_nid_range 2014-07-09 05:58:08 -07:00
xattr.c f2fs: fix recursive lock by f2fs_setxattr 2014-06-02 22:13:16 +09:00
xattr.h f2fs: pass flags field to setxattr functions 2014-05-07 10:21:56 +09:00