
On Thu, 2009-09-24 at 16:00 +0100, Daniel P. Berrange wrote:
* src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Add new APIs qemuMonitorSaveVirtualMemory() and qemuMonitorSavePhysicalMemory() * src/qemu/qemu_driver.c: Use the new qemuMonitorSaveVirtualMemory() and qemuMonitorSavePhysicalMemory() APIs --- src/qemu/qemu_driver.c | 21 ++++----------- src/qemu/qemu_monitor_text.c | 54 ++++++++++++++++++++++++++++++++++++++++++ src/qemu/qemu_monitor_text.h | 10 +++++++ 3 files changed, 70 insertions(+), 15 deletions(-)
...
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c index 8be8047..a5f43c5 100644 --- a/src/qemu/qemu_monitor_text.c +++ b/src/qemu/qemu_monitor_text.c @@ -810,3 +810,57 @@ cleanup: return ret; }
+static int qemuMonitorSaveMemory(const virDomainObjPtr vm, + const char *cmdtype, + unsigned long long offset, + size_t length, + const char *path) +{ + char *cmd = NULL; + char *reply = NULL; + char *safepath = NULL; + int ret = -1; + + if (!(safepath = qemudEscapeMonitorArg(path))) { + virReportOOMError(NULL); + goto cleanup; + }
That's new, would have made sense as a separate patch
+ + if (virAsprintf(&cmd, "%s %llu %zi \"%s\"", cmdtype, offset, length, safepath) < 0) { + virReportOOMError(NULL); + goto cleanup; + } + + if (qemudMonitorCommand(vm, cmd, &reply) < 0) { + qemudReportError(NULL, NULL, NULL, VIR_ERR_OPERATION_FAILED, + _("could save memory region to '%s'"), path); + goto cleanup; + } + + /* XXX what is printed on failure ? */
No debug, but I assume that's fixed in 26/27 ACK Cheers, Mark.