On 20/05/2015 08:16, Fam Zheng wrote:
>  
>  static void mirror_exit(BlockJob *job, void *opaque)
> @@ -328,6 +330,8 @@ static void mirror_exit(BlockJob *job, void *opaque)
>      MirrorExitData *data = opaque;
>      AioContext *replace_aio_context = NULL;
>  
> +    bdrv_op_unblock(s->common.bs, BLOCK_OP_TYPE_DEVICE_IO, data->blocker);
> +    error_free(data->blocker);
>      if (s->to_replace) {
>          replace_aio_context = bdrv_get_aio_context(s->to_replace);
>          aio_context_acquire(replace_aio_context);

Why here and not after the "if (s->should_complete && data->ret == 0) {
... }"?  The commit message says "unblock it after bdrv_swap()."

This is the only remaining issue.

Paolo

Reply via email to