summaryrefslogtreecommitdiff
path: root/block-migration.c
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@web.de>2009-11-30 20:34:55 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2009-12-03 11:45:39 -0600
commit792773b2255d25c6f5fe9dfa0ae200debab92de4 (patch)
treef1bfd9c276a21abc992d9c29a702e39f97c71697 /block-migration.c
parent23bd90d2f916f5a2e0a6ad00d26f3ff26144066d (diff)
downloadqemu-792773b2255d25c6f5fe9dfa0ae200debab92de4.tar.gz
block migration: Skip zero-sized disks
No need to migrate emptiness (risking divide by zero later on). Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'block-migration.c')
-rw-r--r--block-migration.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/block-migration.c b/block-migration.c
index a066f19248..258a88afcc 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -222,6 +222,7 @@ static void init_blk_migration(Monitor *mon, QEMUFile *f)
{
BlkMigDevState *bmds;
BlockDriverState *bs;
+ int64_t sectors;
block_mig_state.submitted = 0;
block_mig_state.read_done = 0;
@@ -231,14 +232,19 @@ static void init_blk_migration(Monitor *mon, QEMUFile *f)
for (bs = bdrv_first; bs != NULL; bs = bs->next) {
if (bs->type == BDRV_TYPE_HD) {
+ sectors = bdrv_getlength(bs) >> BDRV_SECTOR_BITS;
+ if (sectors == 0) {
+ continue;
+ }
+
bmds = qemu_mallocz(sizeof(BlkMigDevState));
bmds->bs = bs;
bmds->bulk_completed = 0;
- bmds->total_sectors = bdrv_getlength(bs) >> BDRV_SECTOR_BITS;
+ bmds->total_sectors = sectors;
bmds->completed_sectors = 0;
bmds->shared_base = block_mig_state.shared_base;
- block_mig_state.total_sector_sum += bmds->total_sectors;
+ block_mig_state.total_sector_sum += sectors;
if (bmds->shared_base) {
monitor_printf(mon, "Start migration for %s with shared base "