On 05/12/2017 15:54, Kevin Wolf wrote:
>      }
>  
> +    bdrv_drain_invoke(bs, true);
>      bdrv_drain_recurse(bs, true);
>  }
>  
> @@ -294,6 +298,7 @@ void bdrv_drained_end(BlockDriverState *bs)
>      }
>  
>      bdrv_parent_drained_end(bs);
> +    bdrv_drain_invoke(bs, false);
>      bdrv_drain_recurse(bs, false);
>      aio_enable_external(bdrv_get_aio_context(bs));

I think invoke should be done after recurse from bdrv_drain*end.  In the
end aio_enable_external is a special kind of drain_end callback, so
bdrv_drain_invoke should go together with it.

Thanks,

Paolo

Reply via email to