fuse: add a new fuse init flag to relax restrictions in no cache mode
authorHao Xu <howeyxu@tencent.com>
Tue, 1 Aug 2023 08:06:46 +0000 (16:06 +0800)
committerMiklos Szeredi <mszeredi@redhat.com>
Wed, 16 Aug 2023 10:39:16 +0000 (12:39 +0200)
commite78662e818f9478e70912cc2970ca632ec9f3635
tree314381c812fb07d72c61135a69fe27caf50a191e
parent80e4f25262f9f1a5f08154fafaa6ac4371043d35
fuse: add a new fuse init flag to relax restrictions in no cache mode

FOPEN_DIRECT_IO is usually set by fuse daemon to indicate need of strong
coherency, e.g. network filesystems.  Thus shared mmap is disabled since it
leverages page cache and may write to it, which may cause inconsistence.

But FOPEN_DIRECT_IO can be used not for coherency but to reduce memory
footprint as well, e.g. reduce guest memory usage with virtiofs.
Therefore, add a new fuse init flag FUSE_DIRECT_IO_RELAX to relax
restrictions in that mode, currently, it allows shared mmap.  One thing to
note is to make sure it doesn't break coherency in your use case.

Signed-off-by: Hao Xu <howeyxu@tencent.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/file.c
fs/fuse/fuse_i.h
fs/fuse/inode.c
include/uapi/linux/fuse.h