On Tue, Jan 28, 2025 at 05:28:16PM +0100, Peter Krempa wrote:
Report any stored I/O error messages reported by the hypervisor when
reporting messages of a domain. As the I/O error may be already stale we
report also the timestamp when it was recorded.
Example message:
I/O error: disk='vda', index='1', path='/dev/mapper/errdev0',
timestamp='2025-01-28 15:47:52.776+0000', message'Input/output error'
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
include/libvirt/libvirt-domain.h | 3 ++
src/conf/domain_conf.c | 50 ++++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 5 ++++
src/libvirt_private.syms | 1 +
src/libxl/libxl_driver.c | 3 +-
src/qemu/qemu_driver.c | 15 +++++++++-
src/test/test_driver.c | 3 +-
7 files changed, 77 insertions(+), 3 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 8327e7079c..50733a5b3a 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -19821,9 +19821,11 @@ qemuDomainGetMessages(virDomainPtr dom,
g_autoptr(GPtrArray) m = g_ptr_array_new_with_free_func(g_free);
virDomainObj *vm = NULL;
int rv = -1;
+ qemuDomainObjPrivate *priv;
virCheckFlags(VIR_DOMAIN_MESSAGE_DEPRECATION |
- VIR_DOMAIN_MESSAGE_TAINTING, -1);
+ VIR_DOMAIN_MESSAGE_TAINTING |
+ VIR_DOMAIN_MESSAGE_IOERRORS, -1);
if (!(vm = qemuDomainObjFromDomain(dom)))
return -1;
@@ -19831,8 +19833,19 @@ qemuDomainGetMessages(virDomainPtr dom,
if (virDomainGetMessagesEnsureACL(dom->conn, vm->def) < 0)
goto cleanup;
+ priv = vm->privateData;
+
virDomainObjGetMessages(vm, m, flags);
+ if (priv->backup) {
&& (!flags || (flags & VIR_DOMAIN_MESSAGE_IOERRORS))
with that
Reviewed-by: Daniel P. Berrangé <berrange(a)redhat.com>
+ size_t i;
+
+ for (i = 0; i < priv->backup->ndisks; i++)
+ virDomainObjGetMessagesIOErrorsChain(priv->backup->disks[i].store,
+ priv->backup->disks[i].name,
+ m);
+ }
With regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|