linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


      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).