• Hou Pengyang's avatar
    f2fs: add ovp valid_blocks check for bg gc victim to fg_gc · f417a02f
    Hou Pengyang authored
    commit e93b9865 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: default avatarHou Pengyang <houpengyang@huawei.com>
    Reviewed-by: default avatarChao Yu <yuchao0@huawei.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    [bwh: Backported to 3.16:
     - In get_victim_by_default(), use continue rather than goto
     - Adjust context]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    f417a02f
gc.c 18.7 KB