Ping...

Since has_not_enough_free_secs(sbi, 0, 0) must be true if 
has_not_enough_free_secs(sbi, sec_freed, 0) is true,
write_checkpoint is sure to execute in both conditions, and segno is NULL_SEGNO 
in both conditions.

On 2017/2/21 20:43, Yunlong Song wrote:
> Signed-off-by: Yunlong Song <yunlong.s...@huawei.com>
> ---
>  fs/f2fs/gc.c | 16 ++++------------
>  1 file changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index 88e5e7b..e5f2569 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -943,23 +943,15 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync, bool 
> background)
>                * enough free sections, we should flush dent/node blocks and do
>                * garbage collections.
>                */
> -             if (__get_victim(sbi, &segno, gc_type) ||
> -                                             prefree_segments(sbi)) {
> -                     ret = write_checkpoint(sbi, &cpc);
> -                     if (ret)
> -                             goto stop;
> -                     segno = NULL_SEGNO;
> -             } else if (has_not_enough_free_secs(sbi, 0, 0)) {
> -                     ret = write_checkpoint(sbi, &cpc);
> -                     if (ret)
> -                             goto stop;
> -             }
> +             ret = write_checkpoint(sbi, &cpc);
> +             if (ret)
> +                     goto stop;
>       } else if (gc_type == BG_GC && !background) {
>               /* f2fs_balance_fs doesn't need to do BG_GC in critical path. */
>               goto stop;
>       }
>  
> -     if (segno == NULL_SEGNO && !__get_victim(sbi, &segno, gc_type))
> +     if (!__get_victim(sbi, &segno, gc_type))
>               goto stop;
>       ret = 0;
>  


-- 
Thanks,
Yunlong Song


Reply via email to