]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Refactor control flow in qemuDomainGetStatsBlockExportDisk
authorPeter Krempa <pkrempa@redhat.com>
Fri, 3 Aug 2018 12:13:43 +0000 (14:13 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 21 Aug 2018 13:46:06 +0000 (15:46 +0200)
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index 08cd9593581cf6f8b9e094bb359b542ade4d8132..53c2fc5ddf69f2c17e55ab768c2dfe92b98a7bde 100644 (file)
@@ -20191,20 +20191,18 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk,
 
 {
     char *alias = NULL;
-    virStorageSourcePtr src = disk->src;
+    virStorageSourcePtr n;
     int ret = -1;
 
-    while (virStorageSourceIsBacking(src) &&
-           (src == disk->src || visitBacking)) {
-
+    for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
         /* alias may be NULL if the VM is not running */
         if (disk->info.alias &&
-            !(alias = qemuDomainStorageAlias(disk->info.alias, src->id)))
+            !(alias = qemuDomainStorageAlias(disk->info.alias, n->id)))
             goto cleanup;
 
-        qemuDomainGetStatsOneBlockRefreshNamed(src, alias, stats, nodestats);
+        qemuDomainGetStatsOneBlockRefreshNamed(n, alias, stats, nodestats);
 
-        if (qemuDomainGetStatsBlockExportHeader(disk, src, *recordnr,
+        if (qemuDomainGetStatsBlockExportHeader(disk, n, *recordnr,
                                                 records, nrecords) < 0)
             goto cleanup;
 
@@ -20213,13 +20211,15 @@ qemuDomainGetStatsBlockExportDisk(virDomainDiskDefPtr disk,
             goto cleanup;
 
         if (qemuDomainGetStatsOneBlock(driver, cfg, dom, records, nrecords,
-                                       alias, src, *recordnr,
+                                       alias, n, *recordnr,
                                        stats) < 0)
             goto cleanup;
 
         VIR_FREE(alias);
         (*recordnr)++;
-        src = src->backingStore;
+
+        if (!visitBacking)
+            break;
     }
 
     ret = 0;