Re: [PATCH v2 12/15] virDomainGetMessages: Introduce VIR_DOMAIN_MESSAGE_IOERRORS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>
> ---
>  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@xxxxxxxxxx>


> +        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 :|




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux