On Wed, Dec 09, 2009 at 06:30:16PM +0000, Daniel P. Berrange wrote: > The XML XPath for detecting JSON in the running VM statefile was > wrong causing all VMs to get JSON mode enabled at libvirtd restart. > > In addition if a VM was running a JSON enabled QEMU once, and then > altered to point to a non-JSON enabled QEMU later the 'monJSON' > flag would not get reset to 0. > > * src/qemu/qemu_driver.c: Fix setting/detection of JSON mode > --- > src/qemu/qemu_driver.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index 0dccae6..3661ef0 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -220,8 +220,11 @@ static int qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt, void *data) > priv->monConfig->type = VIR_DOMAIN_CHR_TYPE_PTY; > VIR_FREE(tmp); > > - if (virXPathBoolean(NULL, "int(./monitor[1]/@json)", ctxt)) > + if (virXPathBoolean(NULL, "count(./monitor[@json = '1']) > 0", ctxt)) { > priv->monJSON = 1; > + } else { > + priv->monJSON = 0; > + } > > switch (priv->monConfig->type) { > case VIR_DOMAIN_CHR_TYPE_PTY: > @@ -2361,7 +2364,9 @@ static int qemudStartVMDaemon(virConnectPtr conn, > #if HAVE_YAJL > if (qemuCmdFlags & QEMUD_CMD_FLAG_MONITOR_JSON) > priv->monJSON = 1; > + else > #endif > + priv->monJSON = 0; > > if ((ret = virFileDeletePid(driver->stateDir, vm->def->name)) != 0) { > virReportSystemError(conn, ret, ACK, the XPath is funky, but I guess I understand why :-) Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list