From: Gregory Haskins <ghaskins@novell.com>
To: kvm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, avi@redhat.com,
davdel@xmailserver.org, mst@redhat.com,
paulmck@linux.vnet.ibm.com, akpm@linux-foundation.org
Subject: [KVM PATCH v2 1/2] Allow waiters to be notified about the eventfd file* going away, and give
Date: Thu, 04 Jun 2009 08:48:07 -0400 [thread overview]
Message-ID: <20090604124807.10544.6071.stgit@dev.haskins.net> (raw)
In-Reply-To: <20090604124047.10544.38861.stgit@dev.haskins.net>
From: Davide Libenzi <davidel@xmailserver.org>
them a change to unregister from the wait queue. This is turn allows
eventfd users to use the eventfd file* w/out holding a live reference to
it.
After the eventfd user callbacks returns, any usage of the eventfd file*
should be dropped. The eventfd user callback can acquire sleepy locks
since it is invoked lockless.
This is a feature, needed by KVM to avoid an awkward workaround when using
eventdf.
[gmh: pulled from -mmotm for inclusion in kvm.git]
Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Tested-by: Gregory Haskins <ghaskins@novell.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Gregory Haskins <ghaskins@novell.com>
---
fs/eventfd.c | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletions(-)
diff --git a/fs/eventfd.c b/fs/eventfd.c
index 3f0e197..72f5f8d 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -61,7 +61,15 @@ EXPORT_SYMBOL_GPL(eventfd_signal);
static int eventfd_release(struct inode *inode, struct file *file)
{
- kfree(file->private_data);
+ struct eventfd_ctx *ctx = file->private_data;
+
+ /*
+ * No need to hold the lock here, since we are on the file cleanup
+ * path and the ones still attached to the wait queue will be
+ * serialized by wake_up_locked_poll().
+ */
+ wake_up_locked_poll(&ctx->wqh, POLLHUP);
+ kfree(ctx);
return 0;
}
next prev parent reply other threads:[~2009-06-04 12:48 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-06-04 12:48 [KVM PATCH v2 0/2] irqfd: use POLLHUP notification for close() Gregory Haskins
2009-06-04 12:48 ` Gregory Haskins [this message]
2009-06-04 12:48 ` [KVM PATCH v2 2/2] kvm: use POLLHUP to close an irqfd instead of an explicit ioctl Gregory Haskins
2009-06-14 11:49 ` Michael S. Tsirkin
2009-06-14 12:53 ` Gregory Haskins
2009-06-14 13:28 ` Michael S. Tsirkin
2009-06-15 3:39 ` Gregory Haskins
2009-06-15 9:46 ` Michael S. Tsirkin
2009-06-15 12:08 ` Gregory Haskins
2009-06-15 12:54 ` Michael S. Tsirkin
2009-06-18 5:16 ` Rusty Russell
2009-06-18 6:49 ` Michael S. Tsirkin
2009-06-18 12:00 ` Gregory Haskins
2009-06-18 12:22 ` Michael S. Tsirkin
2009-06-18 14:03 ` Gregory Haskins
2009-06-18 14:35 ` Michael S. Tsirkin
2009-06-18 16:29 ` Gregory Haskins
2009-06-19 15:37 ` Michael S. Tsirkin
2009-06-19 16:07 ` Gregory Haskins
2009-06-15 3:48 ` Gregory Haskins
2009-06-04 14:02 ` [KVM PATCH v2 0/2] irqfd: use POLLHUP notification for close() Avi Kivity
2009-06-12 3:58 ` Michael S. Tsirkin
2009-06-12 4:08 ` Michael S. Tsirkin
2009-06-14 12:38 ` Gregory Haskins
2009-06-14 12:51 ` Avi Kivity
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=20090604124807.10544.6071.stgit@dev.haskins.net \
--to=ghaskins@novell.com \
--cc=akpm@linux-foundation.org \
--cc=avi@redhat.com \
--cc=davdel@xmailserver.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=paulmck@linux.vnet.ibm.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 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.