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