From c90e545f83d8536b8bf3dfb443cecb52df3339bb Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 9 Dec 2009 18:28:30 +0000 Subject: [PATCH] Fix detection of JSON when restarting libvirtd 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 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 60dea9ce86..a6a1a5ab7c 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -221,8 +221,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: @@ -2440,7 +2443,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,