| From 5641cdf29b90a83166aab8bc4f97b39df59d9359 Mon Sep 17 00:00:00 2001 |
| From: Yunlei He <heyunlei@huawei.com> |
| Date: Tue, 6 Nov 2018 10:25:29 +0800 |
| Subject: f2fs: move dir data flush to write checkpoint process |
| |
| [ 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 <heyunlei@huawei.com> |
| Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@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 7d3189f1941c..5f549bc4e097 100644 |
| --- a/fs/f2fs/file.c |
| +++ b/fs/f2fs/file.c |
| @@ -205,6 +205,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; |
| + |
| /* 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); |
| -- |
| 2.19.1 |
| |