From: Amir Goldstein <amir73il@gmail.com>
To: Jan Kara <jack@suse.cz>
Cc: Vivek Goyal <vgoyal@redhat.com>,
Ioannis Angelakopoulos <iangelak@redhat.com>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
virtio-fs-list <virtio-fs@redhat.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Miklos Szeredi <miklos@szeredi.hu>,
Steve French <sfrench@samba.org>
Subject: Re: [RFC PATCH 0/7] Inotify support in FUSE and virtiofs
Date: Tue, 2 Nov 2021 14:54:01 +0200 [thread overview]
Message-ID: <CAOQ4uxiYQYG8Ta=MNJKpa_0pAPd0MS9PL2r_0ZRD+_TKOw6C7g@mail.gmail.com> (raw)
In-Reply-To: <20211102110931.GD12774@quack2.suse.cz>
On Tue, Nov 2, 2021 at 1:09 PM Jan Kara <jack@suse.cz> wrote:
>
> On Wed 27-10-21 16:29:40, Vivek Goyal wrote:
> > On Wed, Oct 27, 2021 at 03:23:19PM +0200, Jan Kara wrote:
> > > On Wed 27-10-21 08:59:15, Amir Goldstein wrote:
> > > > On Tue, Oct 26, 2021 at 10:14 PM Ioannis Angelakopoulos
> > > > <iangelak@redhat.com> wrote:
> > > > > On Tue, Oct 26, 2021 at 2:27 PM Vivek Goyal <vgoyal@redhat.com> wrote:
> > > > > The problem here is that the OPEN event might still be travelling towards the guest in the
> > > > > virtqueues and arrives after the guest has already deleted its local inode.
> > > > > While the remote event (OPEN) received by the guest is valid, its fsnotify
> > > > > subsystem will drop it since the local inode is not there.
> > > > >
> > > >
> > > > I have a feeling that we are mixing issues related to shared server
> > > > and remote fsnotify.
> > >
> > > I don't think Ioannis was speaking about shared server case here. I think
> > > he says that in a simple FUSE remote notification setup we can loose OPEN
> > > events (or basically any other) if the inode for which the event happens
> > > gets deleted sufficiently early after the event being generated. That seems
> > > indeed somewhat unexpected and could be confusing if it happens e.g. for
> > > some directory operations.
> >
> > Hi Jan,
> >
> > Agreed. That's what Ioannis is trying to say. That some of the remote events
> > can be lost if fuse/guest local inode is unlinked. I think problem exists
> > both for shared and non-shared directory case.
> >
> > With local filesystems we have a control that we can first queue up
> > the event in buffer before we remove local watches. With events travelling
> > from a remote server, there is no such control/synchronization. It can
> > very well happen that events got delayed in the communication path
> > somewhere and local watches went away and now there is no way to
> > deliver those events to the application.
>
> So after thinking for some time about this I have the following question
> about the architecture of this solution: Why do you actually have local
> fsnotify watches at all? They seem to cause quite some trouble... I mean
> cannot we have fsnotify marks only on FUSE server and generate all events
> there? When e.g. file is created from the client, client tells the server
> about creation, the server performs the creation which generates the
> fsnotify event, that is received by the server and forwared back to the
> client which just queues it into notification group's queue for userspace
> to read it.
>
> Now with this architecture there's no problem with duplicate events for
> local & server notification marks, similarly there's no problem with lost
> events after inode deletion because events received by the client are
> directly queued into notification queue without any checking whether inode
> is still alive etc. Would this work or am I missing something?
>
What about group #1 that wants mask A and group #2 that wants mask B
events?
Do you propose to maintain separate event queues over the protocol?
Attach a "recipient list" to each event?
I just don't see how this can scale other than:
- Local marks and connectors manage the subscriptions on local machine
- Protocol updates the server with the combined masks for watched objects
I think that the "post-mortem events" issue could be solved by keeping an
S_DEAD fuse inode object in limbo just for the mark.
When a remote server sends FS_IN_IGNORED or FS_DELETE_SELF for
an inode, the fuse client inode can be finally evicted.
I haven't tried to see how hard that would be to implement.
Thanks,
Amir.
next prev parent reply other threads:[~2021-11-02 12:54 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-25 20:46 [RFC PATCH 0/7] Inotify support in FUSE and virtiofs Ioannis Angelakopoulos
2021-10-25 20:46 ` [RFC PATCH 1/7] FUSE: Add the fsnotify opcode and in/out structs to FUSE Ioannis Angelakopoulos
2021-10-26 14:56 ` Amir Goldstein
2021-10-26 18:28 ` Amir Goldstein
[not found] ` <CAO17o20+jiij64y7b3eKoCjG5b_mLZj6o1LSnZ7+8exN3dFYEg@mail.gmail.com>
2021-10-27 5:46 ` Amir Goldstein
2021-10-27 21:46 ` Vivek Goyal
2021-10-28 4:13 ` Amir Goldstein
2021-10-28 14:20 ` Vivek Goyal
2021-10-25 20:46 ` [RFC PATCH 2/7] FUSE: Add the remote inotify support capability " Ioannis Angelakopoulos
2021-10-25 20:46 ` [RFC PATCH 3/7] FUSE,Inotify,Fsnotify,VFS: Add the fuse_fsnotify_update_mark inode operation Ioannis Angelakopoulos
2021-10-26 15:06 ` Amir Goldstein
2021-11-01 17:49 ` Vivek Goyal
2021-11-02 7:34 ` Amir Goldstein
2021-10-25 20:46 ` [RFC PATCH 4/7] FUSE: Add the fuse_fsnotify_send_request to FUSE Ioannis Angelakopoulos
2021-10-25 20:46 ` [RFC PATCH 5/7] Fsnotify: Add a wrapper around the fsnotify function Ioannis Angelakopoulos
2021-10-26 14:37 ` Amir Goldstein
2021-10-26 15:38 ` Vivek Goyal
2021-10-25 20:46 ` [RFC PATCH 6/7] FUSE,Fsnotify: Add the fuse_fsnotify_event inode operation Ioannis Angelakopoulos
2021-10-25 20:46 ` [RFC PATCH 7/7] virtiofs: Add support for handling the remote fsnotify notifications Ioannis Angelakopoulos
2021-10-26 15:23 ` [RFC PATCH 0/7] Inotify support in FUSE and virtiofs Amir Goldstein
2021-10-26 15:52 ` Vivek Goyal
2021-10-26 18:19 ` Amir Goldstein
2021-10-26 16:18 ` Vivek Goyal
2021-10-26 17:59 ` Amir Goldstein
2021-10-26 18:27 ` Vivek Goyal
2021-10-26 19:04 ` Amir Goldstein
[not found] ` <CAO17o20sdKAWQN6w7Oe0Ze06qcK+J=6rrmA_aWGnY__MRVDCKw@mail.gmail.com>
2021-10-27 5:59 ` Amir Goldstein
2021-10-27 13:23 ` Jan Kara
2021-10-27 20:29 ` Vivek Goyal
2021-10-27 20:37 ` Vivek Goyal
2021-11-02 11:09 ` Jan Kara
2021-11-02 12:54 ` Amir Goldstein [this message]
2021-11-02 20:34 ` Vivek Goyal
2021-11-03 7:31 ` Amir Goldstein
2021-11-03 22:29 ` Vivek Goyal
2021-11-04 5:19 ` Amir Goldstein
2021-11-03 10:09 ` Jan Kara
2021-11-03 11:17 ` Amir Goldstein
2021-11-03 22:36 ` Vivek Goyal
2021-11-04 5:29 ` Amir Goldstein
2021-11-04 10:03 ` Jan Kara
2021-11-05 14:30 ` Vivek Goyal
2021-11-10 6:28 ` Amir Goldstein
2021-11-11 17:30 ` Jan Kara
2021-11-11 20:52 ` Amir Goldstein
2021-11-16 5:09 ` Stef Bon
[not found] ` <CAO17o21YVczE2-BTAVg-0HJU6gjSUkzUSqJVs9k-_t7mYFNHaA@mail.gmail.com>
2021-11-17 6:40 ` Amir Goldstein
2021-11-30 15:27 ` Vivek Goyal
[not found] ` <CAO17o21uh3fJHd0gMu-SmZei5et6HJo91DiLk_YyfUqrtHy2pQ@mail.gmail.com>
2021-12-15 7:10 ` Amir Goldstein
2021-12-15 16:44 ` Vivek Goyal
2021-12-15 17:29 ` Amir Goldstein
2021-12-15 19:20 ` Vivek Goyal
2021-12-15 19:54 ` Amir Goldstein
2021-12-16 11:03 ` Amir Goldstein
2021-12-16 16:24 ` Vivek Goyal
2021-12-16 18:22 ` Amir Goldstein
2021-12-16 22:24 ` Vivek Goyal
2021-12-17 4:21 ` Amir Goldstein
2021-12-17 14:15 ` Vivek Goyal
2021-12-18 8:28 ` Amir Goldstein
2021-12-20 16:41 ` Vivek Goyal
2021-12-20 18:22 ` Amir Goldstein
2022-01-06 23:37 ` Steve French
2021-11-30 15:36 ` Vivek Goyal
2021-10-27 20:24 ` Vivek Goyal
2021-10-28 5:11 ` Amir Goldstein
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='CAOQ4uxiYQYG8Ta=MNJKpa_0pAPd0MS9PL2r_0ZRD+_TKOw6C7g@mail.gmail.com' \
--to=amir73il@gmail.com \
--cc=iangelak@redhat.com \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=sfrench@samba.org \
--cc=vgoyal@redhat.com \
--cc=viro@zeniv.linux.org.uk \
--cc=virtio-fs@redhat.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).