Blame SOURCES/libvirt-qemu-driver-Improve-error-suppression-in-qemuDomainStorageUpdatePhysical.patch

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