The Wednesday 03 Sep 2014 à 19:23:50 (+0800), Fam Zheng wrote :
> Before, we cancel all the child requests with bdrv_aio_cancel, then free
> the acb..
> 
> Now we just kick off asynchronous cancellation of child requests and
> return, we know quorum_aio_cb will be called later, so in the end
> quorum_aio_finalize will take care of calling the caller's cb.
> 
> Signed-off-by: Fam Zheng <f...@redhat.com>
> ---
>  block/quorum.c | 7 ++-----
>  1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/block/quorum.c b/block/quorum.c
> index 093382e..0951d52 100644
> --- a/block/quorum.c
> +++ b/block/quorum.c
> @@ -138,16 +138,13 @@ static void quorum_aio_cancel(BlockDriverAIOCB 
> *blockacb)
>  
>      /* cancel all callbacks */
>      for (i = 0; i < s->num_children; i++) {
> -        bdrv_aio_cancel(acb->qcrs[i].aiocb);
> +        bdrv_aio_cancel_async(acb->qcrs[i].aiocb);
>      }
> -
> -    g_free(acb->qcrs);
> -    qemu_aio_release(acb);
>  }
>  
>  static AIOCBInfo quorum_aiocb_info = {
>      .aiocb_size         = sizeof(QuorumAIOCB),
> -    .cancel             = quorum_aio_cancel,
> +    .cancel_async       = quorum_aio_cancel,
>  };
>  
>  static void quorum_aio_finalize(QuorumAIOCB *acb)
> -- 
> 2.1.0.27.g96db324
> 

Look good but this seems to conflict with one of Liu ongoing patches
as the the quorum_cancel method is currently broken and Liu repair it
in his latest patchset.

See: http://lists.gnu.org/archive/html/qemu-devel/2014-09/msg00022.html

I think one of your series must rebase on the other.

Liu: can you coordinate with Fam ?

Reply via email to