From: Peter Lieven <pl@dlhnet.de>
Date: Mon, 11 Mar 2013 10:04:24 +0000 (+0100)
Subject: block: complete all IOs before resizing a device
X-Git-Tag: v1.4.1~7
X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=2b92aa36d112780674d5686ad9c98e8cfe68d207;p=users%2Fdwmw2%2Fqemu.git

block: complete all IOs before resizing a device

this patch ensures that all pending IOs are completed
before a device is resized. this is especially important
if a device is shrinked as it the bdrv_check_request()
result is invalidated.

Signed-off-by: Peter Lieven <pl@kamp.de>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit 92b7a08d64e5e3129fa885f9d180e5bddcb76b42)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---

diff --git a/blockdev.c b/blockdev.c
index 63e6f1eafa..4ea2725fce 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1043,6 +1043,9 @@ void qmp_block_resize(const char *device, int64_t size, Error **errp)
         return;
     }
 
+    /* complete all in-flight operations before resizing the device */
+    bdrv_drain_all();
+
     switch (bdrv_truncate(bs, size)) {
     case 0:
         break;