On 2018/11/6 10:25, Yunlei He wrote:
> This patch move dir data flush to write checkpoint process, by
> doing this, it may reduce some time for dir fsync.
> 
> pre:
>       -f2fs_do_sync_file enter
>               -file_write_and_wait_range  <- flush & wait
>               -write_checkpoint
>                       -do_checkpoint      <- wait all
>       -f2fs_do_sync_file exit
> 
> now:
>       -f2fs_do_sync_file enter
>               -write_checkpoint
>                       -block_operations   <- flush dir & no wait
>                       -do_checkpoint      <- wait all
>       -f2fs_do_sync_file exit
> 
> Signed-off-by: Yunlei He <[email protected]>
> ---
>  fs/f2fs/file.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> index 88b1246..9eaf07f 100644
> --- a/fs/f2fs/file.c
> +++ b/fs/f2fs/file.c
> @@ -216,6 +216,9 @@ static int f2fs_do_sync_file(struct file *file, loff_t 
> start, loff_t end,
>  
>       trace_f2fs_sync_file_enter(inode);
>  
> +     if (S_ISDIR(inode->i_mode))
> +             goto go_write;

Not sure, will we skip calling f2fs_write_inode due to this check? so we
will miss some metadata update cached in inode cache?

Thanks,

> +
>       /* if fdatasync is triggered, let's do in-place-update */
>       if (datasync || get_dirty_pages(inode) <= SM_I(sbi)->min_fsync_blocks)
>               set_inode_flag(inode, FI_NEED_IPU);
> 



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to