qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 for-2.6 4/5] aio-posix: Skip external nodes i


From: Fam Zheng
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
User-agent: Mutt/1.6.0 (2016-04-01)

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 <address@hidden>
> > ---
> >  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
> > 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]