linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Miklos Szeredi <miklos@szeredi.hu>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Daniel Rosenberg <drosen@google.com>,
	Paul Lawrence <paullawrence@google.com>,
	Alessio Balsini <balsini@android.com>,
	fuse-devel@lists.sourceforge.net, linux-fsdevel@vger.kernel.org,
	overlayfs <linux-unionfs@vger.kernel.org>
Subject: Re: [PATCH v13 05/10] fuse: Handle asynchronous read and write in passthrough
Date: Tue, 29 Aug 2023 14:42:09 +0200	[thread overview]
Message-ID: <CAJfpeguDP8T8P4u6ipdwhJmiV3C40Okq+y6AkVs3A1eWFzSsvA@mail.gmail.com> (raw)
In-Reply-To: <CAOQ4uxgzYevVCaGBjjckOr1vv0gKvVPYiOAL6E_KQY-YQx_7hg@mail.gmail.com>

On Thu, 24 Aug 2023 at 14:12, Amir Goldstein <amir73il@gmail.com> wrote:
>
> On Tue, Aug 22, 2023 at 2:03 PM Miklos Szeredi <miklos@szeredi.hu> wrote:
> >
> > On Tue, 22 Aug 2023 at 12:18, Amir Goldstein <amir73il@gmail.com> wrote:
> > >
> > > On Mon, Aug 21, 2023 at 6:27 PM Amir Goldstein <amir73il@gmail.com> wrote:
> >
> > > > Getting back to this.
> > > > Did you mean something like that? (only compile tested)
> > > >
> > > > https://github.com/amir73il/linux/commits/backing_fs
> > > >
> > > > If yes, then I wonder:
> > > > 1. Is the difference between FUSE_IOCB_MASK and OVL_IOCB_MASK
> > > >     (i.e. the APPEND flag) intentional?
> >
> > Setting IOCB_APPEND on the backing file doesn't make a difference as
> > long as the backing file is not modified during the write.
> >
> > In overlayfs the case of the backing file being modified is not
> > defined, so I guess that's the reason to omit it.  However I don't see
> > a problem with setting it on the backing file either, the file
> > size/position is synchronized after the write, so nothing bad should
> > happen if the backing file was modified.
> >
>
> That raises the question if FUSE passthrough behavior is defined when
> backing file is being modified. Should it be any different than ovl?
> I don't really care if we set IOCB_APPEND or not, just if we need
> a different mask for ovl and FUSE.

Dunno.

I feel that instead of making the behavior defined when file is
modified behind fuse's back, there should be some mechanism between
the server and the client (userspace and kernel) that allows proper
handling of "remote" modification (oplocks/leases/younameit).

I thought about this quite a bit, and even have some patches for the
read-only lease case.  But this is far from trivial.

In the meantime just setting IOCB_APPEND is quite harmless, so I think
we should do it for both overlayfs and fuse for consistency.

>
> > > > 2. What would be the right way to do ovl_copyattr() on io completion?
> > > >     Pass another completion handler to read/write helpers?
> > > >     This seems a bit ugly. Do you have a nicer idea?
> > > >
> >
> > Ugh, I missed that little detail.   I don't have a better idea than to
> > use a callback function.
> >
>
> Ok. added the cleanup callback.
> I think it's not that bad?
>
> https://github.com/amir73il/linux/commits/backing_fs

Looks good.


>
> > >
> > > Hmm. Looking closer, ovl_copyattr() in ovl_aio_cleanup_handler()
> > > seems a bit racy as it is not done under inode_lock().
> > >
>
> Decided to fix that by taking ovl inode spinlock inside ovl_copyattr()
> and did the same for ovl_file_accessed() for read ops.
>
> I've found and fixed two other issues with aio completion on this branch,
> one of them is a fix for a possible realfile refcount leak, so will probably
> need to backport this one.

Great.  Thanks.

Miklos

  reply	other threads:[~2023-08-29 12:43 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-19 12:56 [PATCH v13 00/10] fuse: Add support for passthrough read/write Amir Goldstein
2023-05-19 12:56 ` [PATCH v13 01/10] fs: Generic function to convert iocb to rw flags Amir Goldstein
2023-05-19 12:56 ` [PATCH v13 02/10] fuse: Definitions and ioctl for passthrough Amir Goldstein
2023-05-19 15:12   ` Miklos Szeredi
2023-05-20 10:20     ` Amir Goldstein
2023-05-22 14:50       ` Miklos Szeredi
2023-05-24 10:00         ` Amir Goldstein
2023-05-19 12:56 ` [PATCH v13 03/10] fuse: Passthrough initialization and release Amir Goldstein
2023-05-19 12:56 ` [PATCH v13 04/10] fuse: Introduce synchronous read and write for passthrough Amir Goldstein
2023-05-19 12:57 ` [PATCH v13 05/10] fuse: Handle asynchronous read and write in passthrough Amir Goldstein
2023-05-22 15:20   ` Miklos Szeredi
2023-05-24 10:03     ` Amir Goldstein
2023-08-21 15:27       ` Amir Goldstein
2023-08-22 10:18         ` Amir Goldstein
2023-08-22 11:03           ` Miklos Szeredi
2023-08-22 13:22             ` Amir Goldstein
2023-08-22 14:06               ` Miklos Szeredi
2023-08-24 12:11             ` Amir Goldstein
2023-08-29 12:42               ` Miklos Szeredi [this message]
2023-05-19 12:57 ` [PATCH v13 06/10] fuse: Use daemon creds in passthrough mode Amir Goldstein
2023-05-19 12:57 ` [PATCH v13 07/10] fuse: Introduce passthrough for mmap Amir Goldstein
2023-05-19 12:57 ` [PATCH v13 08/10] fuse: update inode size/mtime after passthrough write Amir Goldstein
2023-09-25  6:41   ` [External] " Zhang Tianci
2023-09-25 10:43     ` Amir Goldstein
2023-09-26 15:31       ` Jens Axboe
2023-09-26 15:48         ` Amir Goldstein
2023-09-26 16:19           ` Jens Axboe
2023-09-26 16:56             ` Amir Goldstein
2023-05-19 12:57 ` [PATCH v13 09/10] fuse: invalidate atime after passthrough read/mmap Amir Goldstein
2023-05-19 12:57 ` [PATCH v13 10/10] fuse: setup a passthrough fd without a permanent backing id Amir Goldstein
2023-06-06 10:22   ` Fwd: " Miklos Szeredi
2023-06-06 11:00     ` [fuse-devel] " Amir Goldstein
2023-06-06 12:46       ` Miklos Szeredi
2023-05-20 10:28 ` [PATCH v13 00/10] fuse: Add support for passthrough read/write Amir Goldstein
2023-06-06  9:13 ` Amir Goldstein
2023-06-06  9:49   ` Miklos Szeredi
2023-06-06 11:19     ` Amir Goldstein
2023-06-06 13:06       ` Miklos Szeredi
2023-08-29 18:14         ` Amir Goldstein
2023-09-20 13:56           ` Amir Goldstein
2023-09-20 18:15             ` Miklos Szeredi
2023-09-21  7:33               ` Amir Goldstein
2023-09-21  8:21                 ` Miklos Szeredi
2023-09-21  9:17                   ` Amir Goldstein
2023-09-21  9:30                     ` Miklos Szeredi
2023-09-21 10:31                       ` Amir Goldstein
2023-09-21 11:50                         ` Miklos Szeredi
2023-09-22 12:45                           ` Amir Goldstein
2023-10-08 17:53                             ` Amir Goldstein
2023-10-10 14:31                               ` Miklos Szeredi
2023-10-10 15:14                                 ` Amir Goldstein
2023-10-14 16:01                                   ` Amir Goldstein
2023-10-16 10:30                                 ` Amir Goldstein
2023-10-16 13:21                                   ` Miklos Szeredi
2023-10-16 19:16                                   ` Bernd Schubert

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=CAJfpeguDP8T8P4u6ipdwhJmiV3C40Okq+y6AkVs3A1eWFzSsvA@mail.gmail.com \
    --to=miklos@szeredi.hu \
    --cc=amir73il@gmail.com \
    --cc=balsini@android.com \
    --cc=drosen@google.com \
    --cc=fuse-devel@lists.sourceforge.net \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=paullawrence@google.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).