99cbc7
From 2c1a60343710fc11a5c8bcfd022fd2a8aa6681ff Mon Sep 17 00:00:00 2001
99cbc7
Message-Id: <2c1a60343710fc11a5c8bcfd022fd2a8aa6681ff@dist-git>
99cbc7
From: Peter Krempa <pkrempa@redhat.com>
99cbc7
Date: Fri, 16 Aug 2019 14:36:56 +0200
99cbc7
Subject: [PATCH] qemu: driver: Improve error suppression in
99cbc7
 qemuDomainStorageUpdatePhysical
99cbc7
MIME-Version: 1.0
99cbc7
Content-Type: text/plain; charset=UTF-8
99cbc7
Content-Transfer-Encoding: 8bit
99cbc7
99cbc7
None of the callers of qemuDomainStorageUpdatePhysical care about
99cbc7
errors.
99cbc7
99cbc7
Use the new flag for qemuDomainStorageOpenStat which suppresses some
99cbc7
errors and move the reset of the rest of the uncommon errors into this
99cbc7
function. Document what is happening in a comment for the function.
99cbc7
99cbc7
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
99cbc7
Reviewed-by: Ján Tomko <jtomko@redhat.com>
99cbc7
(cherry picked from commit 3d7ea4165b890880f43074e1e5e6e10bf0ad21d6)
99cbc7
https: //bugzilla.redhat.com/show_bug.cgi?id=1724808
99cbc7
Message-Id: <65325f9c156ebab937b81e89c9bfe6c1b6d8251b.1565958905.git.pkrempa@redhat.com>
99cbc7
Reviewed-by: Ján Tomko <jtomko@redhat.com>
99cbc7
---
99cbc7
 src/qemu/qemu_driver.c | 24 ++++++++++++++++++------
99cbc7
 1 file changed, 18 insertions(+), 6 deletions(-)
99cbc7
99cbc7
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
99cbc7
index 91eeb05319..72c75e308b 100644
99cbc7
--- a/src/qemu/qemu_driver.c
99cbc7
+++ b/src/qemu/qemu_driver.c
99cbc7
@@ -11849,6 +11849,19 @@ qemuDomainStorageCloseStat(virStorageSourcePtr src,
99cbc7
 }
99cbc7
 
99cbc7
 
99cbc7
+/**
99cbc7
+ * qemuDomainStorageUpdatePhysical:
99cbc7
+ * @driver: qemu driver
99cbc7
+ * @cfg: qemu driver configuration object
99cbc7
+ * @vm: domain object
99cbc7
+ * @src: storage source to update
99cbc7
+ *
99cbc7
+ * Update the physical size of the disk by reading the actual size of the image
99cbc7
+ * on disk.
99cbc7
+ *
99cbc7
+ * Returns 0 on successful update and -1 otherwise (some uncommon errors may be
99cbc7
+ * reported but are reset (thus only logged)).
99cbc7
+ */
99cbc7
 static int
99cbc7
 qemuDomainStorageUpdatePhysical(virQEMUDriverPtr driver,
99cbc7
                                 virQEMUDriverConfigPtr cfg,
99cbc7
@@ -11862,8 +11875,11 @@ qemuDomainStorageUpdatePhysical(virQEMUDriverPtr driver,
99cbc7
     if (virStorageSourceIsEmpty(src))
99cbc7
         return 0;
99cbc7
 
99cbc7
-    if (qemuDomainStorageOpenStat(driver, cfg, vm, src, &fd, &sb, false) < 0)
99cbc7
+    if ((ret = qemuDomainStorageOpenStat(driver, cfg, vm, src, &fd, &sb, true)) <= 0) {
99cbc7
+        if (ret < 0)
99cbc7
+            virResetLastError();
99cbc7
         return -1;
99cbc7
+    }
99cbc7
 
99cbc7
     ret = virStorageSourceUpdatePhysicalSize(src, fd, &sb);
99cbc7
 
99cbc7
@@ -12058,7 +12074,6 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
99cbc7
         if (qemuDomainStorageUpdatePhysical(driver, cfg, vm, disk->src) == 0) {
99cbc7
             info->physical = disk->src->physical;
99cbc7
         } else {
99cbc7
-            virResetLastError();
99cbc7
             info->physical = entry->physical;
99cbc7
         }
99cbc7
     } else {
99cbc7
@@ -20132,12 +20147,9 @@ qemuDomainGetStatsOneBlock(virQEMUDriverPtr driver,
99cbc7
         QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
99cbc7
                                  "physical", entry->physical);
99cbc7
     } else {
99cbc7
-        if (qemuDomainStorageUpdatePhysical(driver, cfg, dom, src) == 0) {
99cbc7
+        if (qemuDomainStorageUpdatePhysical(driver, cfg, dom, src) == 0)
99cbc7
             QEMU_ADD_BLOCK_PARAM_ULL(record, maxparams, block_idx,
99cbc7
                                      "physical", src->physical);
99cbc7
-        } else {
99cbc7
-            virResetLastError();
99cbc7
-        }
99cbc7
     }
99cbc7
 
99cbc7
     if (qemuDomainGetStatsOneBlockNode(record, maxparams, src, block_idx,
99cbc7
-- 
99cbc7
2.22.1
99cbc7