[libvirt PATCH v2 13/16] qemu: include nbdkit state in private xml
Peter Krempa
pkrempa at redhat.com
Tue Sep 27 13:26:26 UTC 2022
On Wed, Aug 31, 2022 at 13:40:58 -0500, Jonathon Jongsma wrote:
> Add xml to the private data for a disk source to represent the nbdkit
> process so that the state can be re-created if the libvirt daemon is
> restarted. Format:
>
> <nbdkit>
> <pidfile>/path/to/nbdkit.pid</pidfile>
> <socketfile>/path/to/nbdkit.socket</socketfile>
> </nbdkit>
>
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
> src/qemu/qemu_domain.c | 51 ++++++++++++++++++++++++++++++++++++++++++
> src/qemu/qemu_nbdkit.c | 21 +++++++++++++++++
> src/qemu/qemu_nbdkit.h | 4 ++++
> 3 files changed, 76 insertions(+)
>
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index f69cfee0cf..cfc030cc9c 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -21,6 +21,7 @@
>
> #include <config.h>
>
> +#include "qemu_conf.h"
Neither I nor the compiler found something which would require adding
this include.
> #include "qemu_domain.h"
> #include "qemu_alias.h"
> #include "qemu_block.h"
> @@ -1816,6 +1817,31 @@ qemuStorageSourcePrivateDataAssignSecinfo(qemuDomainSecretInfo **secinfo,
> }
>
>
> +static int
> +qemuStorageSourcePrivateDataParseNbdkit(xmlNodePtr node,
> + xmlXPathContextPtr ctxt,
> + virStorageSource *src)
> +{
> + qemuDomainStorageSourcePrivate *srcpriv = qemuDomainStorageSourcePrivateFetch(src);
> + g_autofree char *pidfile = NULL;
> + g_autofree char *socketfile = NULL;
> + VIR_XPATH_NODE_AUTORESTORE(ctxt);
> +
> + ctxt->node = node;
> +
> + if (!(pidfile = virXPathString("string(./pidfile)", ctxt)))
> + return -1;
> +
> + if (!(socketfile = virXPathString("string(./socketfile)", ctxt)))
> + return -1;
> +
> + if (!srcpriv->nbdkitProcess)
Looks like you can move this condition to the top to avoid parsing
anything if it's not going to be used.
> + srcpriv->nbdkitProcess = qemuNbdkitProcessLoad(src, pidfile, socketfile);
I'm not entirely a fan of trying to read the pidfile in the parser but
doing it elsewhere would probably be worse.
> +
> + return 0;
> +}
> +
> +
> static int
> qemuStorageSourcePrivateDataParse(xmlXPathContextPtr ctxt,
> virStorageSource *src)
More information about the libvir-list
mailing list