diff options
author | Peter Lieven <pl@dlhnet.de> | 2013-03-11 11:04:24 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2013-03-22 17:51:31 +0100 |
commit | 92b7a08d64e5e3129fa885f9d180e5bddcb76b42 (patch) | |
tree | a5d82d0be1107be81d8a7c3aa4f7d115356d18dc /blockdev.c | |
parent | 5c916681ae2383f0425bb8a3680ade9d055f5dfe (diff) | |
download | qemu-92b7a08d64e5e3129fa885f9d180e5bddcb76b42.tar.gz qemu-92b7a08d64e5e3129fa885f9d180e5bddcb76b42.tar.bz2 qemu-92b7a08d64e5e3129fa885f9d180e5bddcb76b42.zip |
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>
Diffstat (limited to 'blockdev.c')
-rw-r--r-- | blockdev.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/blockdev.c b/blockdev.c index 09f76b782f..6f2b7592ce 100644 --- a/blockdev.c +++ b/blockdev.c @@ -1127,6 +1127,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; |