[libvirt] [PATCH] qemu: store the emulator name in the capabilities XML

Michal Prívozník mprivozn at redhat.com
Wed Dec 18 14:41:15 UTC 2019


On 12/18/19 3:03 PM, Daniel P. Berrangé wrote:
> We don't need this for any functional purpose, but when debugging hosts
> it is useful to know what binary a given capabilities XML document is
> associated with.
> 
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/qemu/qemu_capabilities.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index 2223589058..7d47fa4d02 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -3852,6 +3852,7 @@ virQEMUCapsParseSEVInfo(virQEMUCapsPtr qemuCaps, xmlXPathContextPtr ctxt)
>   * Parsing a doc that looks like
>   *
>   * <qemuCaps>
> + *   <emulator>/some/path</emulator>
>   *   <qemuctime>234235253</qemuctime>
>   *   <selfctime>234235253</selfctime>
>   *   <selfvers>1002016</selfvers>
> @@ -3895,6 +3896,18 @@ virQEMUCapsLoadCache(virArch hostArch,
>          goto cleanup;
>      }
>  
> +    if (!(str = virXPathString("string(./emulator)", ctxt))) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                       _("missing emulator in QEMU capabilities cache"));
> +        goto cleanup;

Since no caps stored on a disk have this, this change will trigger full
caps reprobe. I'm not saying it's a bad thing, just so that we are aware
of this.

> +    }
> +    if (!STREQ(str, qemuCaps->binary)) {

Use STRNEQ() instead, please, to make syntax-check happy.

> +        virReportError(VIR_ERR_INTERNAL_ERROR,
> +                       _("Expected caps for '%s' but saw '%s'"),
> +                       qemuCaps->binary, str);
> +        goto cleanup;
> +    }
> +    VIR_FREE(str);
>      if (virXPathLongLong("string(./qemuctime)", ctxt, &l) < 0) {
>          virReportError(VIR_ERR_XML_ERROR, "%s",
>                         _("missing qemuctime in QEMU capabilities XML"));
> @@ -4232,6 +4245,8 @@ virQEMUCapsFormatCache(virQEMUCapsPtr qemuCaps)
>      virBufferAddLit(&buf, "<qemuCaps>\n");
>      virBufferAdjustIndent(&buf, 2);
>  
> +    virBufferEscapeString(&buf, "<emulator>%s</emulator>\n",
> +                          qemuCaps->binary);
>      virBufferAsprintf(&buf, "<qemuctime>%llu</qemuctime>\n",
>                        (long long)qemuCaps->ctime);
>      virBufferAsprintf(&buf, "<selfctime>%llu</selfctime>\n",
> 

What I'm missing here is change to our tests/qemucapabilitiesdata/*.xml
that would introduce the <emulator/> to each one of them.

Otherwise the patch looks good. This is something I wanted a long time ago.

Michal




More information about the libvir-list mailing list