On Wed, 03/16 15:16, Paolo Bonzini wrote:
> Synchronous I/O should in general happen either in the main thread (e.g.
> for bdrv_open and bdrv_create) or between bdrv_drained_begin and
> bdrv_drained_end.  Therefore, the simplest way to wait for it to finish
> is to wait for _all_ pending I/O to complete.
> 
> In fact, there was one case in bdrv_close where we explicitly drained
> after bdrv_flush; this is now unnecessary.  And we should probably have
> called bdrv_drain_all after calls to bdrv_flush_all, which is now
> unnecessary too.
> 
> This decouples synchronous I/O from aio_poll.  When the request used
> not to be tracked as part of bdrv_drain (e.g. bdrv_co_get_block_status)
> we need to update the in_flight count.
> 
> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
Reviewed-by: Fam Zheng <f...@redhat.com>


Reply via email to