qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 04/20] block: Convert bdrv_em_aiocb_info.canc


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v4 04/20] block: Convert bdrv_em_aiocb_info.cancel to .cancel_async
Date: Wed, 03 Sep 2014 13:28:23 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.0

Il 03/09/2014 13:23, Fam Zheng ha scritto:
> All the difference is that the old .cancel doesn't call cb, but
> .cancel_async does.

This requires auditing all callbacks though, doesn't it?  Or at least
adding an

    if (ret == -ECANCELED) {
        return;
    }

at the beginning.

Paolo

> Signed-off-by: Fam Zheng <address@hidden>
> ---
>  block.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/block.c b/block.c
> index 4aa1bd7..b7253af 100644
> --- a/block.c
> +++ b/block.c
> @@ -4679,6 +4679,9 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB 
> *blockacb)
>  {
>      BlockDriverAIOCBSync *acb =
>          container_of(blockacb, BlockDriverAIOCBSync, common);
> +
> +    acb->ret = -ECANCELED;
> +    acb->common.cb(acb->common.opaque, acb->ret);
>      qemu_bh_delete(acb->bh);
>      acb->bh = NULL;
>      qemu_aio_release(acb);
> @@ -4686,7 +4689,7 @@ static void bdrv_aio_cancel_em(BlockDriverAIOCB 
> *blockacb)
>  
>  static const AIOCBInfo bdrv_em_aiocb_info = {
>      .aiocb_size         = sizeof(BlockDriverAIOCBSync),
> -    .cancel             = bdrv_aio_cancel_em,
> +    .cancel_async       = bdrv_aio_cancel_em,
>  };
>  
>  static void bdrv_aio_bh_cb(void *opaque)
> 




reply via email to

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