On Tue, Jul 02, 2013 at 09:39:25AM -0400, John Ferlan wrote: > In the 'virsh dommemstats <domain>' qemu driver code, if we have a > balloonpath and we hadn't already collected the data (somehow) from the > "query-balloon" command, then use qom-get to attempt to fill in the > domain memory stats data from the balloon driver. > --- > src/qemu/qemu_driver.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index f51e766..c9a66ff 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -9499,6 +9499,7 @@ qemuDomainMemoryStats(virDomainPtr dom, > virQEMUDriverPtr driver = dom->conn->privateData; > virDomainObjPtr vm; > int ret = -1; > + qemuMonitorObjectProperty prop; > > virCheckFlags(0, -1); > > @@ -9518,6 +9519,22 @@ qemuDomainMemoryStats(virDomainPtr dom, > qemuDomainObjPrivatePtr priv = vm->privateData; > qemuDomainObjEnterMonitor(driver, vm); > ret = qemuMonitorGetMemoryStats(priv->mon, stats, nr_stats); > + > + /* The above call should only return the 'actual' memory due to > + * changes that disabled statistics gathering from query-balloon. > + * If so, let's check if we have a path to the balloon device > + * and then try to gather more stats from there if possible > + */ > + if ((ret == 0 || ret == 1) && priv->balloonpath) { > + memset(&prop, 0, sizeof(qemuMonitorObjectProperty)); > + prop.type = QEMU_MONITOR_OBJECT_PROPERTY_BALLOON_STATS; > + prop.curelems = ret; > + prop.maxelems = nr_stats; > + prop.val.ptr = (void **)stats; > + if (qemuMonitorGetObjectProperty(priv->mon, priv->balloonpath, > + "guest-stats", &prop) == 0) > + ret = prop.curelems; > + } If we hide all the QOM stuff inside the existing qemuMonitorGetMemoryStats() API, then this patch just goes away entirely. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list