
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@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/