On Thu, Oct 29, 2015 at 10:14:23AM +0800, Fam Zheng wrote:
>  BlockAIOCB *bdrv_aio_ioctl(BlockDriverState *bs,
>          unsigned long int req, void *buf,
>          BlockCompletionFunc *cb, void *opaque)
>  {
> -    BlockDriver *drv = bs->drv;
> +    BlockAIOCBCoroutine *acb = qemu_aio_get(&bdrv_em_co_aiocb_info,
> +                                            bs, cb, opaque);
> +    acb->need_bh = true;
> +    acb->req.error = -EINPROGRESS;
> +    acb->req.req = req;
> +    acb->req.buf = buf;
> +    if (qemu_in_coroutine()) {
> +        /* Fast-path if already in coroutine context */
> +        bdrv_co_aio_ioctl_entry(acb);

This is not how bdrv_aio_*() work.  They never use the existing
coroutine and doing so here would be inconsistent.

Attachment: signature.asc
Description: PGP signature

Reply via email to