Hi Pengyang,

On 02/22, Hou Pengyang wrote:
> When no dirty colde segment for fggc ssr, we do NOT set_cold_data.

The get_ssr_segment() finds a victim segment across all the hot/warm/cold data
logs. When does this happen?

Thanks,

> 
> Signed-off-by: Hou Pengyang <houpengy...@huawei.com>
> ---
>  fs/f2fs/gc.c | 21 ++++++++++++++++++++-
>  1 file changed, 20 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
> index 4ee749f..a0eed23 100644
> --- a/fs/f2fs/gc.c
> +++ b/fs/f2fs/gc.c
> @@ -666,6 +666,25 @@ static void move_encrypted_block(struct inode *inode, 
> block_t bidx,
>       f2fs_put_page(page, 1);
>  }
>  
> +/*
> + * If NOT enough dirty cold data segments for fggc, fggc would consume
> + * a valuable free segment, which would slow down the fggc procedure,
> + * If there are NO COLD dirty segment, we do not set_cold_page.
> + */
> +static void fggc_set_cold_data(struct page *page)
> +{
> +     struct f2fs_sb_info *sbi = F2FS_P_SB(page);
> +     struct dirty_seglist_info *dirty_i = DIRTY_I(sbi);
> +     int nr_cold_dirties;
> +
> +     mutex_lock(&dirty_i->seglist_lock);
> +     nr_cold_dirties = dirty_i->nr_dirty[DIRTY_COLD_DATA];
> +     mutex_unlock(&dirty_i->seglist_lock);
> +
> +     if (nr_cold_dirties)
> +             set_cold_data(page);
> +
> +}
>  static void move_data_page(struct inode *inode, block_t bidx, int gc_type,
>                                                       unsigned int segno, int 
> off)
>  {
> @@ -706,7 +725,7 @@ static void move_data_page(struct inode *inode, block_t 
> bidx, int gc_type,
>                       remove_dirty_inode(inode);
>               }
>  
> -             set_cold_data(page);
> +             fggc_set_cold_data(page);
>  
>               err = do_write_data_page(&fio);
>               if (err == -ENOMEM && is_dirty) {
> -- 
> 2.10.1
> 
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, SlashDot.org! http://sdm.link/slashdot
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to