On Wed, Feb 13, 2013 at 02:22:07PM +0100, Kevin Wolf wrote:
> +static bool qcow2_drain(BlockDriverState *bs)
I don't like this function name. This function is a bool query but
normal drain() means flush requests (i.e. do something that modified
state).
> +{
> +BDRVQcowState *s = bs->opaque;
This creates a separate coroutine for processing the COW and the L2
table update of allocating requests. The request itself can then
complete while the second part is still being processed.
We need a qemu_aio_flush() hook in order to ensure that these
coroutines for the second part aren't still ru