diff mbox

[RFC,0/3] iothread: release iothread around aio_poll

Message ID 553672D3.7080100@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini April 21, 2015, 3:54 p.m. UTC
On 21/04/2015 17:40, Stefan Hajnoczi wrote:
>> >
>> > Stefan, can you put this on track for 2.4 or do you need a repost?
> This series causes qemu-iotests -qcow2 091 to fail:
> 
> 9f83aea22314d928bb272153ff37d2d7f5adbf06 is the first bad commit
> commit 9f83aea22314d928bb272153ff37d2d7f5adbf06
> Author: Paolo Bonzini <pbonzini@redhat.com>
> Date:   Fri Feb 20 17:26:50 2015 +0100
> 
>     aio-posix: move pollfds to thread-local storage

Oops...  what I intended is this:


but the above is totally untested, so feel free to just remove
the assertion or also to drop the series.

Paolo

Comments

Stefan Hajnoczi April 22, 2015, 10:26 a.m. UTC | #1
On Tue, Apr 21, 2015 at 05:54:59PM +0200, Paolo Bonzini wrote:
> 
> 
> On 21/04/2015 17:40, Stefan Hajnoczi wrote:
> >> >
> >> > Stefan, can you put this on track for 2.4 or do you need a repost?
> > This series causes qemu-iotests -qcow2 091 to fail:
> > 
> > 9f83aea22314d928bb272153ff37d2d7f5adbf06 is the first bad commit
> > commit 9f83aea22314d928bb272153ff37d2d7f5adbf06
> > Author: Paolo Bonzini <pbonzini@redhat.com>
> > Date:   Fri Feb 20 17:26:50 2015 +0100
> > 
> >     aio-posix: move pollfds to thread-local storage
> 
> Oops...  what I intended is this:
> 
> diff --git a/aio-posix.c b/aio-posix.c
> index 4a30b77..e411591 100644
> --- a/aio-posix.c
> +++ b/aio-posix.c
> @@ -254,8 +254,7 @@ bool aio_poll(AioContext *ctx, bool blocking)
>      aio_set_dispatching(ctx, !blocking);
>  
>      ctx->walking_handlers++;
> -
> -    npfd = 0;
> +    assert(npfd == 0);
>  
>      /* fill pollfds */
>      QLIST_FOREACH(node, &ctx->aio_handlers, node) {
> @@ -276,6 +275,7 @@ bool aio_poll(AioContext *ctx, bool blocking)
>          }
>      }
>  
> +    npfd = 0;
>      ctx->walking_handlers--;
>  
>      /* Run dispatch even if there were no readable fds to run timers */
> 
> but the above is totally untested, so feel free to just remove
> the assertion or also to drop the series.

Thanks, I squashed this change in and now qemu-iotests passes.

Stefan
diff mbox

Patch

diff --git a/aio-posix.c b/aio-posix.c
index 4a30b77..e411591 100644
--- a/aio-posix.c
+++ b/aio-posix.c
@@ -254,8 +254,7 @@  bool aio_poll(AioContext *ctx, bool blocking)
     aio_set_dispatching(ctx, !blocking);
 
     ctx->walking_handlers++;
-
-    npfd = 0;
+    assert(npfd == 0);
 
     /* fill pollfds */
     QLIST_FOREACH(node, &ctx->aio_handlers, node) {
@@ -276,6 +275,7 @@  bool aio_poll(AioContext *ctx, bool blocking)
         }
     }
 
+    npfd = 0;
     ctx->walking_handlers--;
 
     /* Run dispatch even if there were no readable fds to run timers */