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.