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 <p...@kamp.de>
---
 blockdev.c |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/blockdev.c b/blockdev.c
index 0e67d06..be36ed7 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1062,6 +1062,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;
--
1.7.9.5

Reply via email to