On 2/18/19 10:18 AM, Kevin Wolf wrote: > aio_poll() has an existing assertion that the function is only called > from the AioContext's home thread if blocking is allowed. > > This is not enough, some handlers make assumptions about the thread they > run in. Extend the assertion to non-blocking calls, too. > > Signed-off-by: Kevin Wolf <[email protected]> > --- > util/aio-posix.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) >
Reviewed-by: Eric Blake <[email protected]> > diff --git a/util/aio-posix.c b/util/aio-posix.c > index 8640dfde9f..6fbfa7924f 100644 > --- a/util/aio-posix.c > +++ b/util/aio-posix.c > @@ -613,6 +613,8 @@ bool aio_poll(AioContext *ctx, bool blocking) > int64_t timeout; > int64_t start = 0; > > + assert(in_aio_context_home_thread(ctx)); > + > /* aio_notify can avoid the expensive event_notifier_set if > * everything (file descriptors, bottom halves, timers) will > * be re-evaluated before the next blocking poll(). This is > @@ -621,7 +623,6 @@ bool aio_poll(AioContext *ctx, bool blocking) > * so disable the optimization now. > */ > if (blocking) { > - assert(in_aio_context_home_thread(ctx)); > atomic_add(&ctx->notify_me, 2); > } > > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
