]> git.proxmox.com Git - mirror_qemu.git/blobdiff - block.c
block: fix bdrv_flush() ordering in bdrv_close()
[mirror_qemu.git] / block.c
diff --git a/block.c b/block.c
index 6c493ad457d690f37d070068b86529cea07f36cb..183fec8aa532f857fd785b7e8c855e184d0a3391 100644 (file)
--- a/block.c
+++ b/block.c
@@ -1358,11 +1358,12 @@ void bdrv_reopen_abort(BDRVReopenState *reopen_state)
 
 void bdrv_close(BlockDriverState *bs)
 {
-    bdrv_flush(bs);
     if (bs->job) {
         block_job_cancel_sync(bs->job);
     }
-    bdrv_drain_all();
+    bdrv_drain_all(); /* complete I/O */
+    bdrv_flush(bs);
+    bdrv_drain_all(); /* in case flush left pending I/O */
     notifier_list_notify(&bs->close_notifiers, bs);
 
     if (bs->drv) {