From: Fam Zheng <famz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
Jeff Cody <jcody@redhat.com>, Max Reitz <mreitz@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
qemu-block@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 for-2.6 4/5] aio-posix: Skip external nodes in aio_dispatch
Date: Fri, 22 Apr 2016 19:44:18 +0800 [thread overview]
Message-ID: <20160422114418.GA17719@ad.usersys.redhat.com> (raw)
In-Reply-To: <20160422113834.GD4237@noname.redhat.com>
On Fri, 04/22 13:38, Kevin Wolf wrote:
> Am 22.04.2016 um 12:56 hat Fam Zheng geschrieben:
> > aio_poll doesn't poll the external nodes so this should never be true,
> > but aio_ctx_dispatch may get notified by the events from GSource. To
> > make bdrv_drained_begin effective in main loop, we should check the
> > is_external flag here too.
> >
> > This could result in a few busy polls because the fd is left unhandled,
> > but the drained section is only transient and shouldn't be longer than
> > one or two event loop iterations.
>
> Are the busy polls because aio_ctx_check() calls aio_pending(), which
> still returns true, even if only disabled AioHandlers are ready? If so,
> should we just add the is_external check to aio_pending(), too?
Good point, that is certainly better! Will add that.
Fam
>
> Kevin
>
> > Signed-off-by: Fam Zheng <famz@redhat.com>
> > ---
> > aio-posix.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/aio-posix.c b/aio-posix.c
> > index 7fd565f..a7c9304 100644
> > --- a/aio-posix.c
> > +++ b/aio-posix.c
> > @@ -323,6 +323,7 @@ bool aio_dispatch(AioContext *ctx)
> >
> > if (!node->deleted &&
> > (revents & (G_IO_IN | G_IO_HUP | G_IO_ERR)) &&
> > + aio_node_check(ctx, node->is_external) &&
> > node->io_read) {
> > node->io_read(node->opaque);
> >
> > @@ -333,6 +334,7 @@ bool aio_dispatch(AioContext *ctx)
> > }
> > if (!node->deleted &&
> > (revents & (G_IO_OUT | G_IO_ERR)) &&
> > + aio_node_check(ctx, node->is_external) &&
> > node->io_write) {
> > node->io_write(node->opaque);
> > progress = true;
> > --
> > 2.8.0
> >
next prev parent reply other threads:[~2016-04-22 11:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-22 10:55 [Qemu-devel] [PATCH v2 for-2.6 0/5] block: Fix assertion failure at mirror exit Fam Zheng
2016-04-22 10:56 ` [Qemu-devel] [PATCH v2 for-2.6 1/5] iohandler: Introduce iohandler_get_aio_context Fam Zheng
2016-04-22 13:46 ` Michael S. Tsirkin
2016-04-22 10:56 ` [Qemu-devel] [PATCH v2 for-2.6 2/5] event-notifier: Add "is_external" parameter Fam Zheng
2016-04-22 13:44 ` Michael S. Tsirkin
2016-04-22 10:56 ` [Qemu-devel] [PATCH v2 for-2.6 3/5] virtio: Mark host notifiers as external Fam Zheng
2016-04-22 13:44 ` Michael S. Tsirkin
2016-04-22 10:56 ` [Qemu-devel] [PATCH v2 for-2.6 4/5] aio-posix: Skip external nodes in aio_dispatch Fam Zheng
2016-04-22 11:38 ` Kevin Wolf
2016-04-22 11:44 ` Fam Zheng [this message]
2016-04-22 10:56 ` [Qemu-devel] [PATCH v2 for-2.6 5/5] mirror: Workaround for unexpected iohandler events during completion Fam Zheng
2016-04-22 13:49 ` [Qemu-devel] [PATCH v2 for-2.6 0/5] block: Fix assertion failure at mirror exit Michael S. Tsirkin
2016-04-22 13:58 ` Fam Zheng
2016-04-22 13:58 ` Kevin Wolf
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=20160422114418.GA17719@ad.usersys.redhat.com \
--to=famz@redhat.com \
--cc=jcody@redhat.com \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@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 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.