Am 26.10.2016 um 12:29 hat Alberto Garcia geschrieben:
> bdrv_drain_all() doesn't allow the caller to do anything after all
> pending requests have been completed but before block jobs are
> resumed.
>
> This patch splits bdrv_drain_all() into _begin() and _end() for that
> purpose. It also adds aio_{disable,enable}_external() calls to disable
> external clients in the meantime.
>
> An important restriction of this split is that no new block jobs or
> BlockDriverStates can be created between the bdrv_drain_all_begin()
> and bdrv_drain_all_end() calls. This is not a concern now because
> we'll only be using this in bdrv_reopen_multiple(), but it must be
> dealt with if we ever have other uses cases in the future.
>
> Signed-off-by: Alberto Garcia <[email protected]>
> Cc: Paolo Bonzini <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>