[Devel] [PATCH VZ9 2/2] fs: fuse: set FMODE_NOWAIT flag on vstorage files

Alexey Kuznetsov kuznet at virtuozzo.com
Thu Nov 7 19:03:54 MSK 2024


FMODE_NOWAIT is new kernel API added quite a while ago, but activated
in the latest rhel updates. Earlier kernels had a bug,
fses without associated bdev (like fuse or any other virtual
file system) enforced this flag at top level. This bug
has been fixed, FMODE_NOWAIT is respected by top vfs layer,
so vstorage is executed without this flag which resulted
in serious performance degradation.

NOTE. Actual implementation of NOWAIT IO could be
an interesting improvement. As our qemu still does not use
io_uring, it is still useless, but io_uring will change the picture.

Affects: #VSTOR-94858

Signed-off-by: Alexey Kuznetsov <kuznet at virtuozzo.com>
---
 fs/fuse/file.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 195b771..aa248bd 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -354,6 +354,9 @@ int fuse_open_common(struct inode *inode, struct file *file, bool isdir)
 				i_size_write(inode, size);
 		}
 
+		if (fc->close_wait)
+			file->f_mode |= FMODE_NOWAIT;
+
 		spin_unlock(&fi->lock);
 		inode_unlock(inode);
 
-- 
1.8.3.1



More information about the Devel mailing list