On Thu, 2009-09-24 at 16:00 +0100, Daniel P. Berrange wrote:
* src/qemu/qemu_monitor.c, src/qemu/qemu_monitor.h: Add new
qemuMonitorSetBalloon() based on existing code in
qemudDomainSetMemoryBalloon
* src/qemu/qemu_driver.c: Remove use of qemudDomainSetMemoryBalloon()
in favour of qemuMonitorSetBalloon(). Fix error code when balloon
is not supported
---
src/qemu/qemu_driver.c | 56 ++++-------------------------------------
src/qemu/qemu_monitor_text.c | 47 +++++++++++++++++++++++++++++++++++
src/qemu/qemu_monitor_text.h | 2 +
3 files changed, 55 insertions(+), 50 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 8d3c9b6..a0b5e49 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
...
@@ -3066,10 +3019,13 @@ static int qemudDomainSetMemory(virDomainPtr
dom, unsigned long newmem) {
}
if (virDomainIsActive(vm)) {
- ret = qemudDomainSetMemoryBalloon(dom->conn, vm, newmem);
- if (ret == 0)
+ ret = qemuMonitorSetBalloon(vm, newmem);
+ /* Turn lack of balloon support into a fatal error */
+ if (ret == 0) {
qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_SUPPORT,
"%s", _("cannot set memory of an active
domain"));
+ ret = -1;
+ }
Making this an error condition is new; would have been nice as a
preceeding patch
} else {
vm->def->memory = newmem;
ret = 0;
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
index 2a20db3..be13dce 100644
--- a/src/qemu/qemu_monitor_text.c
+++ b/src/qemu/qemu_monitor_text.c
@@ -551,6 +551,10 @@ error:
/* The reply from QEMU contains 'ballon: actual=421' where value is in MB */
#define BALLOON_PREFIX "balloon: actual="
+/*
+ * Returns: 0 if balloon not supported, +1 if balloon query worked
+ * or -1 on failure
+ */
int qemuMonitorGetBalloonInfo(const virDomainObjPtr vm,
unsigned long *currmem)
{
Should be in previous patch
ACK
Cheers,
Mark.