From: Hao Xu <hao.xu@linux.dev>
To: Bernd Schubert <bernd.schubert@fastmail.fm>,
fuse-devel@lists.sourceforge.net
Cc: linux-fsdevel@vger.kernel.org, Wanpeng Li <wanpengli@tencent.com>,
cgxu519@mykernel.net, miklos@szeredi.hu
Subject: Re: [fuse-devel] [PATCH v2] fuse: add a new fuse init flag to relax restrictions in no cache mode
Date: Fri, 30 Jun 2023 10:52:52 +0800 [thread overview]
Message-ID: <b588f7a9-7b0f-1b07-dad0-4f9c5fbe27ee@linux.dev> (raw)
In-Reply-To: <1f0bf6c6-eac8-1a13-17b2-48cec5e991e2@fastmail.fm>
Hi Bernd,
On 6/30/23 01:13, Bernd Schubert wrote:
>
>
> On 6/29/23 10:17, Hao Xu wrote:
>> From: Hao Xu <howeyxu@tencent.com>
>>
>> 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>
>> ---
>>
>> v1 -> v2:
>> make the new flag a fuse init one rather than a open flag since it's
>> not common that different files in a filesystem has different
>> strategy of shared mmap.
>>
>> fs/fuse/file.c | 8 ++++++--
>> fs/fuse/fuse_i.h | 3 +++
>> fs/fuse/inode.c | 5 ++++-
>> include/uapi/linux/fuse.h | 1 +
>> 4 files changed, 14 insertions(+), 3 deletions(-)
>>
>> diff --git a/fs/fuse/file.c b/fs/fuse/file.c
>> index bc4115288eec..871b66b54322 100644
>> --- a/fs/fuse/file.c
>> +++ b/fs/fuse/file.c
>> @@ -2478,14 +2478,18 @@ static const struct vm_operations_struct
>> fuse_file_vm_ops = {
>> static int fuse_file_mmap(struct file *file, struct vm_area_struct
>> *vma)
>> {
>> struct fuse_file *ff = file->private_data;
>> + struct fuse_conn *fc = ff->fm->fc;
>> /* DAX mmap is superior to direct_io mmap */
>> if (FUSE_IS_DAX(file_inode(file)))
>> return fuse_dax_mmap(file, vma);
>> if (ff->open_flags & FOPEN_DIRECT_IO) {
>> - /* Can't provide the coherency needed for MAP_SHARED */
>> - if (vma->vm_flags & VM_MAYSHARE)
>> + /* Can't provide the coherency needed for MAP_SHARED
>> + * if FUSE_DIRECT_IO_RELAX isn't set.
>> + */
>> + if (!(ff->open_flags & fc->direct_io_relax) &&
>> + vma->vm_flags & VM_MAYSHARE)
>> return -ENODEV;
>
> I'm confused here, the idea was that open_flags do not need additional
> flags? Why is this not just
>
sorry for this, seems I sent a WIP version by accident.., I'll fix it soon.
Thanks,
Hao
prev parent reply other threads:[~2023-06-30 2:53 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-29 8:17 [PATCH v2] fuse: add a new fuse init flag to relax restrictions in no cache mode Hao Xu
2023-06-29 17:13 ` [fuse-devel] " Bernd Schubert
2023-06-30 2:52 ` Hao Xu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b588f7a9-7b0f-1b07-dad0-4f9c5fbe27ee@linux.dev \
--to=hao.xu@linux.dev \
--cc=bernd.schubert@fastmail.fm \
--cc=cgxu519@mykernel.net \
--cc=fuse-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=wanpengli@tencent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).