[libvirt] [PATCH] Fix detection of JSON when restarting libvirtd
Daniel Veillard
veillard at redhat.com
Fri Dec 11 09:14:09 UTC 2009
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 at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list