]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: driver: Improve error suppression in qemuDomainStorageUpdatePhysical
authorPeter Krempa <pkrempa@redhat.com>
Wed, 14 Aug 2019 15:57:18 +0000 (17:57 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 16 Aug 2019 11:17:41 +0000 (13:17 +0200)
None of the callers of qemuDomainStorageUpdatePhysical care about
errors.

Use the new flag for qemuDomainStorageOpenStat which suppresses some
errors and move the reset of the rest of the uncommon errors into this
function. Document what is happening in a comment for the function.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_driver.c

index cc296c1fe30ff5849d1c9fb757ba634ab31cf553..2dffef964215020d1f49411971f0edd30e236b22 100644 (file)
@@ -12318,6 +12318,19 @@ qemuDomainStorageCloseStat(virStorageSourcePtr src,
 }
 
 
+/**
+ * qemuDomainStorageUpdatePhysical:
+ * @driver: qemu driver
+ * @cfg: qemu driver configuration object
+ * @vm: domain object
+ * @src: storage source to update
+ *
+ * Update the physical size of the disk by reading the actual size of the image
+ * on disk.
+ *
+ * Returns 0 on successful update and -1 otherwise (some uncommon errors may be
+ * reported but are reset (thus only logged)).
+ */
 static int
 qemuDomainStorageUpdatePhysical(virQEMUDriverPtr driver,
                                 virQEMUDriverConfigPtr cfg,
@@ -12331,8 +12344,11 @@ qemuDomainStorageUpdatePhysical(virQEMUDriverPtr driver,
     if (virStorageSourceIsEmpty(src))
         return 0;
 
-    if (qemuDomainStorageOpenStat(driver, cfg, vm, src, &fd, &sb, false) < 0)
+    if ((ret = qemuDomainStorageOpenStat(driver, cfg, vm, src, &fd, &sb, true)) <= 0) {
+        if (ret < 0)
+            virResetLastError();
         return -1;
+    }
 
     ret = virStorageSourceUpdatePhysicalSize(src, fd, &sb);
 
@@ -12504,7 +12520,6 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
         if (qemuDomainStorageUpdatePhysical(driver, cfg, vm, disk->src) == 0) {
             info->physical = disk->src->physical;
         } else {
-            virResetLastError();
             info->physical = entry->physical;
         }
     } else {
@@ -21376,12 +21391,9 @@ qemuDomainGetStatsOneBlock(virQEMUDriverPtr driver,
         QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
                                  "physical", entry->physical);
     } else {
-        if (qemuDomainStorageUpdatePhysical(driver, cfg, dom, src) == 0) {
+        if (qemuDomainStorageUpdatePhysical(driver, cfg, dom, src) == 0)
             QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
                                      "physical", src->physical);
-        } else {
-            virResetLastError();
-        }
     }
 
     ret = 0;