On 20/07/2020 12.22, Thomas Huth wrote:
> qemuAgentFSInfoToPublic() currently only sets the devAlias for PCI devices.
> However, the QEMU guest agent could also provide the device name in the
> "dev" field of the response for other devices instead (well, at least
after
> fixing another problem in the current QEMU guest agent...). So if creating
> the devAlias from the PCI information failed, let's fall back to the name
> provided by the guest agent. This helps to fix the empty "Target" fields
> that occur when running "virsh domfsinfo" on s390x where CCW devices are
> used for the guest instead of PCI devices.
>
> Also add a proper debug message here in case we completely failed to set the
> device alias, since this problem here was very hard to debug: The only two
> error messages that I've seen were "Unable to get filesystem
information"
> and "Unable to encode message payload" - which only indicates that
something
> went wrong in the RPC call. No debug message indicated the real problem, so
> I had to learn the hard way why the RPC call failed (it apparently does not
> like devAlias left to be NULL) and where the real problem comes from.
>
> Buglink:
https://bugzilla.redhat.com/show_bug.cgi?id=1755075
> Signed-off-by: Thomas Huth <thuth(a)redhat.com>
> ---
> src/qemu/qemu_driver.c | 19 +++++++++++--------
> 1 file changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index d185666ed8..e45c61ee20 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -21935,14 +21935,17 @@ qemuAgentFSInfoToPublic(qemuAgentFSInfoPtr agent,
> qemuAgentDiskInfoPtr agentdisk = agent->disks[i];
> virDomainDiskDefPtr diskDef;
>
> - if (!(diskDef = virDomainDiskByAddress(vmdef,
> - &agentdisk->pci_controller,
> - agentdisk->bus,
> - agentdisk->target,
> - agentdisk->unit)))
> - continue;
> -
> - ret->devAlias[i] = g_strdup(diskDef->dst);
> + diskDef = virDomainDiskByAddress(vmdef,
> + &agentdisk->pci_controller,
> + agentdisk->bus,
> + agentdisk->target,
> + agentdisk->unit);
> + if (diskDef != NULL)
> + ret->devAlias[i] = g_strdup(diskDef->dst);
> + else if (agentdisk->devnode != NULL)
> + ret->devAlias[i] = g_strdup(agentdisk->devnode);
> + else
> + VIR_DEBUG("Missing devnode name for '%s'.",
ret->mountpoint);
> }
>
> return ret;
>
Friendly ping!
Any more comments here? Is it ok this way or shall I change the order?