Hi jinsu,

+Cc f2fs mailing list

Thank you for the report.

Can you please try below patch?

From 5aeb87cffa73f52b29c7e8dcc3729337f925bb60 Mon Sep 17 00:00:00 2001
From: Chao Yu <c...@kernel.org>
Date: Fri, 1 Nov 2024 11:18:57 +0800
Subject: [PATCH] fix

---
 fs/f2fs/file.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 0e7a0195eca8..f656ca3cc61c 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -883,7 +883,7 @@ static bool f2fs_force_buffered_io(struct inode *inode, int 
rw)
                return true;
        if (f2fs_compressed_file(inode))
                return true;
-       if (f2fs_has_inline_data(inode))
+       if (f2fs_has_inline_data(inode) && rw == READ)
                return true;

        /* disallow direct IO if any of devices has unaligned blksize */
--
2.40.1



On 2024/10/31 13:09, 이진수 wrote:
From: jinsu LEE <jinsu1....@samsung.com>

To: Chao Yu <c...@kernel.org>

cc: jaeg...@kernel.org, v-songbao...@oppo.com


Hi Caho Yu

I'm Jinsu Lee and I work on memory(UFS) at Samsung Electronics.


I'm sending you an e-mail because I have an inquiry about the f2fs commit below.

https://lore.kernel.org/linux-f2fs-devel/20240523132948.2250254-1-c...@kernel.org/#R 
<https://lore.kernel.org/linux-f2fs-devel/20240523132948.2250254-1-c...@kernel.org/#R>


 From the commit message, it seems to be a modification to fix race case 
IOMAP_HOLE(all zero) using direct io.

However, in the v6.6-kernel that includes this commit, the fio sequential write 
performance is very low.

​(v6.1-kernel) about 3900MB/s or more

(v6.6-kernel) about 800MB/s or less


Due to the corresponding commit, "f2fs_buffered_write_iter" is being performed instead of 
"f2fs_dio_write_iter". (Red box part of perf call stack below)

I wonder if you know about this part and if there is any way to modify 
IOMAP_HOLE so as not to affect the performance of direct io.


perf data during fio test (v6.6 kernel with your commit)

fio DIO sequential write 800MB/s (very slow)

The part of the red box below is an action that did not exist in the previous 
kernel and is becoming a factor that reduces DIO seq write performance.

In this case, "f2fs_file_write_iter" takes much longer than the previous kernel.


perf data during fio test (v6.1 kernel)

fio DIO sequential write 3900MB/s

There is no call for the "f2fs_buffered_write_iter" or "generic_perform_write" function 
and "f2f2_file_write_iter" more fast and there is no problem with DIO seq write performance.

​

Thank you






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

Reply via email to