On Wed, Nov 30, 2011 at 12:28 PM, Christoph Hellwig <h...@lst.de> wrote: > On Wed, Nov 30, 2011 at 12:23:43PM +0000, Stefan Hajnoczi wrote: >> Many places in QEMU call qemu_aio_flush() to complete all pending >> asynchronous I/O. Most of these places actually want to drain all block >> requests but there is block layer API to do so. > > there seems to be a "not" missing in the last half sentence. > >> >> This patch introduces the bdrv_drain_all() API to wait for requests >> across all BlockDriverStates to complete. As a bonus we perform checks >> after qemu_aio_wait() to ensure that requests really have finished. > > It looks like all but four of the callers actually just want to drain a > single BlockDriverState. And one of those four already has its own loop > over all BlockDriverStates.
Yes, we still don't have an interface for waiting on just one BlockDriverState. virtio-blk even has a comment about the fact that there is no per-block device way of waiting. I think this should be done later since it is independent of adding these asserts after qemu_aio_flush() (which is what this patch does). Stefan