f2fs: add a new function get_ssr_cost
This patch add a new method get_ssr_cost to select SSR segment more accurately. Signed-off-by: Yunlei He <heyunlei@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
bd80a4b981
commit
b7b7c4cf1c
11
fs/f2fs/gc.c
11
fs/f2fs/gc.c
|
@ -258,11 +258,20 @@ static unsigned int get_greedy_cost(struct f2fs_sb_info *sbi,
|
||||||
valid_blocks * 2 : valid_blocks;
|
valid_blocks * 2 : valid_blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int get_ssr_cost(struct f2fs_sb_info *sbi,
|
||||||
|
unsigned int segno)
|
||||||
|
{
|
||||||
|
struct seg_entry *se = get_seg_entry(sbi, segno);
|
||||||
|
|
||||||
|
return se->ckpt_valid_blocks > se->valid_blocks ?
|
||||||
|
se->ckpt_valid_blocks : se->valid_blocks;
|
||||||
|
}
|
||||||
|
|
||||||
static inline unsigned int get_gc_cost(struct f2fs_sb_info *sbi,
|
static inline unsigned int get_gc_cost(struct f2fs_sb_info *sbi,
|
||||||
unsigned int segno, struct victim_sel_policy *p)
|
unsigned int segno, struct victim_sel_policy *p)
|
||||||
{
|
{
|
||||||
if (p->alloc_mode == SSR)
|
if (p->alloc_mode == SSR)
|
||||||
return get_seg_entry(sbi, segno)->ckpt_valid_blocks;
|
return get_ssr_cost(sbi, segno);
|
||||||
|
|
||||||
/* alloc_mode == LFS */
|
/* alloc_mode == LFS */
|
||||||
if (p->gc_mode == GC_GREEDY)
|
if (p->gc_mode == GC_GREEDY)
|
||||||
|
|
Loading…
Reference in New Issue