]> git.proxmox.com Git - qemu.git/commitdiff
block migration: Skip zero-sized disks
authorJan Kiszka <jan.kiszka@web.de>
Mon, 30 Nov 2009 19:34:55 +0000 (20:34 +0100)
committerAnthony Liguori <aliguori@us.ibm.com>
Thu, 3 Dec 2009 17:45:39 +0000 (11:45 -0600)
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>
block-migration.c

index a066f1924812823f9f23d91ca03135afb95a7225..258a88afcc703f7ea6a42e1c7b4647987b5fbf4c 100644 (file)
@@ -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 "