>-----Original Message-----
>From: Yuchao (T)
>Sent: Tuesday, November 06, 2018 5:20 PM
>To: heyunlei; [email protected]; [email protected]
>Cc: [email protected]; miaoxie (A)
>Subject: Re: [f2fs-dev][PATCH] f2fs: move dir data flush to write checkpoint 
>process
>
>
>
>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?

Here,new checkpoint will update all dirty inodes metadata from inode cache to 
inode page?
Or maybe we just skip file_write_and_wait_range action for I found it will 
always write a checkpoint
even the dir is clean.

And then, I test the original code:

Mkdir  A
Sync A
While true
        Fsync A

Everytime fsync the clean directory A,f2fs will write a new checkpoint also. 

Thanks.
>
>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