From: Vivek Goyal <vgoyal@redhat.com> To: Stefan Hajnoczi <stefanha@redhat.com> Cc: virtio-fs@redhat.com, miklos@szeredi.hu, qemu-devel@nongnu.org, dgilbert@redhat.com Subject: Re: [PATCH 1/4] virtiofsd: Release file locks using F_UNLCK Date: Fri, 22 Nov 2019 08:45:47 -0500 [thread overview] Message-ID: <20191122134547.GC8636@redhat.com> (raw) In-Reply-To: <20191122100713.GB464656@stefanha-x1.localdomain> On Fri, Nov 22, 2019 at 10:07:13AM +0000, Stefan Hajnoczi wrote: > On Fri, Nov 15, 2019 at 03:55:40PM -0500, Vivek Goyal wrote: > > diff --git a/contrib/virtiofsd/passthrough_ll.c b/contrib/virtiofsd/passthrough_ll.c > > index bc214df0c7..028e7da273 100644 > > --- a/contrib/virtiofsd/passthrough_ll.c > > +++ b/contrib/virtiofsd/passthrough_ll.c > > @@ -936,6 +936,14 @@ static void put_shared(struct lo_data *lo, struct lo_inode *inode) > > } > > } > > > > +static void release_plock(gpointer data) > > The name posix_locks_value_destroy() would be clearer because it matches > g_hash_table_new_full() terminology and the function cannot be confused > with a lock acquire/release operation. Ok, will use this name. > > This patch conflicts with the cleanups that are currently being made to > virtiofsd: > https://github.com/stefanha/qemu/commit/1e493175feca58a81a2d0cbdac93b92e5425d850#diff-ca2dea995d1e6cdb95c8a47c7cca51ceR773 Yes it will. I see you are removing element from hash table on lo_flush(). This works fine today but with waiting locks, we drop the inode->plock_mutex lock and then wait for the lock and expect "lo_inode_plock" to not go away. So I don't think you can remove the element from hash table upon lo_flush(). May be we can refcount lo_inode_plock structure and first release all the locks using setlk(UNLCK) and then drop the reference. If this is last refernce, it will be freed. And waiting lock code, will obtain a refernce under inode->posix_locks and then wait for lock outside the lock. IOW, I will say don't do this optimization of lookup + remove because it will not work with blocking locks. Thanks Vivek
WARNING: multiple messages have this Message-ID (diff)
From: Vivek Goyal <vgoyal@redhat.com> To: Stefan Hajnoczi <stefanha@redhat.com> Cc: virtio-fs@redhat.com, miklos@szeredi.hu, qemu-devel@nongnu.org Subject: Re: [Virtio-fs] [PATCH 1/4] virtiofsd: Release file locks using F_UNLCK Date: Fri, 22 Nov 2019 08:45:47 -0500 [thread overview] Message-ID: <20191122134547.GC8636@redhat.com> (raw) In-Reply-To: <20191122100713.GB464656@stefanha-x1.localdomain> On Fri, Nov 22, 2019 at 10:07:13AM +0000, Stefan Hajnoczi wrote: > On Fri, Nov 15, 2019 at 03:55:40PM -0500, Vivek Goyal wrote: > > diff --git a/contrib/virtiofsd/passthrough_ll.c b/contrib/virtiofsd/passthrough_ll.c > > index bc214df0c7..028e7da273 100644 > > --- a/contrib/virtiofsd/passthrough_ll.c > > +++ b/contrib/virtiofsd/passthrough_ll.c > > @@ -936,6 +936,14 @@ static void put_shared(struct lo_data *lo, struct lo_inode *inode) > > } > > } > > > > +static void release_plock(gpointer data) > > The name posix_locks_value_destroy() would be clearer because it matches > g_hash_table_new_full() terminology and the function cannot be confused > with a lock acquire/release operation. Ok, will use this name. > > This patch conflicts with the cleanups that are currently being made to > virtiofsd: > https://github.com/stefanha/qemu/commit/1e493175feca58a81a2d0cbdac93b92e5425d850#diff-ca2dea995d1e6cdb95c8a47c7cca51ceR773 Yes it will. I see you are removing element from hash table on lo_flush(). This works fine today but with waiting locks, we drop the inode->plock_mutex lock and then wait for the lock and expect "lo_inode_plock" to not go away. So I don't think you can remove the element from hash table upon lo_flush(). May be we can refcount lo_inode_plock structure and first release all the locks using setlk(UNLCK) and then drop the reference. If this is last refernce, it will be freed. And waiting lock code, will obtain a refernce under inode->posix_locks and then wait for lock outside the lock. IOW, I will say don't do this optimization of lookup + remove because it will not work with blocking locks. Thanks Vivek
next prev parent reply other threads:[~2019-11-22 13:49 UTC|newest] Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-15 20:55 [PATCH 0/4] [RFC] virtiofsd, vhost-user-fs: Add support for notification queue Vivek Goyal 2019-11-15 20:55 ` [Virtio-fs] " Vivek Goyal 2019-11-15 20:55 ` [PATCH 1/4] virtiofsd: Release file locks using F_UNLCK Vivek Goyal 2019-11-15 20:55 ` [Virtio-fs] " Vivek Goyal 2019-11-22 10:07 ` Stefan Hajnoczi 2019-11-22 10:07 ` [Virtio-fs] " Stefan Hajnoczi 2019-11-22 13:45 ` Vivek Goyal [this message] 2019-11-22 13:45 ` Vivek Goyal 2019-11-15 20:55 ` [PATCH 2/4] virtiofd: Create a notification queue Vivek Goyal 2019-11-15 20:55 ` [Virtio-fs] " Vivek Goyal 2019-11-22 10:19 ` Stefan Hajnoczi 2019-11-22 10:19 ` [Virtio-fs] " Stefan Hajnoczi 2019-11-22 14:47 ` Vivek Goyal 2019-11-22 14:47 ` [Virtio-fs] " Vivek Goyal 2019-11-22 17:29 ` Dr. David Alan Gilbert 2019-11-22 17:29 ` [Virtio-fs] " Dr. David Alan Gilbert 2019-11-15 20:55 ` [PATCH 3/4] virtiofsd: Specify size of notification buffer using config space Vivek Goyal 2019-11-15 20:55 ` [Virtio-fs] " Vivek Goyal 2019-11-22 10:33 ` Stefan Hajnoczi 2019-11-22 10:33 ` [Virtio-fs] " Stefan Hajnoczi 2019-11-25 14:57 ` Vivek Goyal 2019-11-25 14:57 ` [Virtio-fs] " Vivek Goyal 2019-11-15 20:55 ` [PATCH 4/4] virtiofsd: Implement blocking posix locks Vivek Goyal 2019-11-15 20:55 ` [Virtio-fs] " Vivek Goyal 2019-11-22 10:53 ` Stefan Hajnoczi 2019-11-22 10:53 ` [Virtio-fs] " Stefan Hajnoczi 2019-11-25 15:38 ` Vivek Goyal 2019-11-22 17:47 ` Dr. David Alan Gilbert 2019-11-22 17:47 ` [Virtio-fs] " Dr. David Alan Gilbert 2019-11-25 15:44 ` Vivek Goyal 2019-11-26 13:02 ` Dr. David Alan Gilbert 2019-11-27 19:08 ` Vivek Goyal 2019-12-09 11:06 ` Dr. David Alan Gilbert
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=20191122134547.GC8636@redhat.com \ --to=vgoyal@redhat.com \ --cc=dgilbert@redhat.com \ --cc=miklos@szeredi.hu \ --cc=qemu-devel@nongnu.org \ --cc=stefanha@redhat.com \ --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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.