From: Yunlei He <heyun...@huawei.com>

[ Upstream commit b61ac5b720146c619c7cdf17eff2551b934399e5 ]

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 <heyun...@huawei.com>
Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 fs/f2fs/file.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 96bfd9f0ea02..bee3bc7a16ac 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -200,6 +200,9 @@ int f2fs_sync_file(struct file *file, loff_t start, loff_t 
end, int datasync)
 
        trace_f2fs_sync_file_enter(inode);
 
+       if (S_ISDIR(inode->i_mode))
+               goto go_write;
+
        /* if fdatasync is triggered, let's do in-place-update */
        if (get_dirty_pages(inode) <= SM_I(sbi)->min_fsync_blocks)
                set_inode_flag(fi, FI_NEED_IPU);
-- 
2.19.1



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to