[Sheepdog] [Qemu-devel] coroutine bug?, was Re: [PATCH] sheepdog: use coroutines

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Fri Jan 6 12:21:30 CET 2012


At Fri, 06 Jan 2012 20:16:16 +0900,
MORITA Kazutaka wrote:
> Thanks for your detailed explanation.  I confirmed the following hack
> fixes this problem.
> 
> ---8<---
> diff --git a/block/sheepdog.c b/block/sheepdog.c
> index 17a79be..b27c770 100644
> --- a/block/sheepdog.c
> +++ b/block/sheepdog.c
> @@ -626,6 +626,9 @@ static void coroutine_fn aio_read_response(void *opaque)
>  
>      switch (acb->aiocb_type) {
>      case AIOCB_WRITE_UDATA:
> +        /* this coroutine context is no longer suitable for co_recv
> +         * because we may send data to update vdi objects */
> +        s->co_recv = NULL;
>          if (!is_data_obj(aio_req->oid)) {
>              break;
>          }
> ---8<---

I've pushed this fix to git://github.com/collie/qemu.git

Please use this tree until I create a coroutine based sheepdog driver.

Thanks,

Kazutaka



More information about the sheepdog mailing list