Il 11/04/2012 12:40, Kevin Wolf ha scritto: > @@ -816,6 +816,8 @@ void bdrv_close(BlockDriverState *bs) > if (bs->job) { > block_job_cancel_sync(bs->job); > } > + bdrv_drain_all();
Actually the bdrv_drain_all needs to go first. This is because block_job_cancel_sync guarantees to exit only after the block job's own I/O has finished, *but* it needs to see all I/O from the guest. Paolo