From: Peter Krempa Date: Fri, 24 Jan 2025 16:17:51 +0000 (+0100) Subject: qemuProcessHandleIOError: Prefer lookup by node name X-Git-Tag: v11.1.0-rc1~131 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=784538a470fe346cb1ab85786b8ece85cbe7ff9f;p=thirdparty%2Flibvirt.git qemuProcessHandleIOError: Prefer lookup by node name When qemu reports a node name for an I/O error we should prefer the lookup by node name instead as it gives us the path to the specific image which caused the error instead of the top level image path. Signed-off-by: Peter Krempa Reviewed-by: Daniel P. Berrangé --- diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 80a73643f0..1849f68634 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -837,22 +837,26 @@ qemuProcessHandleIOError(qemuMonitor *mon G_GNUC_UNUSED, const char *eventPath = ""; const char *eventAlias = ""; const char *eventReason = ""; - virDomainDiskDef *disk; + virDomainDiskDef *disk = NULL; + virStorageSource *src = NULL; virObjectLock(vm); priv = QEMU_DOMAIN_PRIVATE(vm); - if (device) + if (nodename) + disk = qemuDomainDiskLookupByNodename(vm->def, priv->backup, nodename, &src); + + if (!disk) disk = qemuProcessFindDomainDiskByAliasOrQOM(vm, device, NULL); - else if (nodename) - disk = qemuDomainDiskLookupByNodename(vm->def, NULL, nodename, NULL); - else - disk = NULL; - if (disk) { - eventPath = virDomainDiskGetSource(disk); + if (!src && disk) + src = disk->src; + + if (disk) eventAlias = disk->info.alias; - } + + if (src && src->path) + eventPath = src->path; if (nospace) eventReason = "enospc";