[libvirt] [PATCH] qemu: Don't fail if physical size can't be updated in qemuDomainGetBlockInfo

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 fucntion and return plausible data. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1442344 --- Notes: This function will require more fixing though. This is just a bandaid to remove the regression. I'll post other patches as follow up later. src/qemu/qemu_driver.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e39de625d..8ff242597 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -11553,10 +11553,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; } -- 2.12.2

On Thu, Apr 20, 2017 at 15:50:00 +0200, Peter Krempa wrote:
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 fucntion and return plausible data.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1442344 ---
Ping

On 04/20/2017 09:50 AM, Peter Krempa wrote:
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 fucntion and return plausible
function
data.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1442344 ---
Notes: This function will require more fixing though. This is just a bandaid to remove the regression. I'll post other patches as follow up later.
src/qemu/qemu_driver.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
ACK John could have sworn I looked at this late last week and responded to it.
participants (2)
-
John Ferlan
-
Peter Krempa