]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Don't fail if physical size can't be updated in qemuDomainGetBlockInfo
authorPeter Krempa <pkrempa@redhat.com>
Thu, 20 Apr 2017 09:16:42 +0000 (11:16 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 28 Apr 2017 07:44:25 +0000 (09:44 +0200)
Since commit c5f6151390 qemuDomainBlockInfo tries to update the
"physical" storage size for all network storage and not only block
devices.

Since the storage driver APIs to do this are not implemented for certain
storage types (RBD, iSCSI, ...) the code would fail to retrieve any data
since the failure of qemuDomainStorageUpdatePhysical is fatal.

Since it's desired to return data even if the total size can't be
updated we need to ignore errors from that function and return plausible
data.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1442344

src/qemu/qemu_driver.c

index 139ea52a6d06a7048add57951f997257f1e0faec..a5c664e656dd7c539bffa697adf7dd53975be9bc 100644 (file)
@@ -11567,10 +11567,12 @@ qemuDomainGetBlockInfo(virDomainPtr dom,
         if (info->allocation == 0)
             info->allocation = entry->physical;
 
-        if (qemuDomainStorageUpdatePhysical(driver, cfg, vm, disk->src) < 0)
-            goto endjob;
-
-        info->physical = disk->src->physical;
+        if (qemuDomainStorageUpdatePhysical(driver, cfg, vm, disk->src) == 0) {
+            info->physical = disk->src->physical;
+        } else {
+            virResetLastError();
+            info->physical = entry->physical;
+        }
     } else {
         info->physical = entry->physical;
     }