[libvirt] [PATCH 12/27] Add API for issuing the 'migrate_set_speed' monitor command
Mark McLoughlin
markmc at redhat.com
Mon Sep 28 13:22:56 UTC 2009
On Thu, 2009-09-24 at 16:00 +0100, Daniel P. Berrange wrote:
> * src/qemu/qemu_driver.c: Use new qemuMonitorSetMigrationSpeed()
> API during migration
> * src/qemu/qemu_monitor.h, src/qemu/qemu_monitor.c: Add new
> qemuMonitorSetMigrationSpeed() API
> ---
> src/qemu/qemu_driver.c | 11 +++--------
> src/qemu/qemu_monitor_text.c | 28 ++++++++++++++++++++++++++++
> src/qemu/qemu_monitor_text.h | 3 +++
> 3 files changed, 34 insertions(+), 8 deletions(-)
>
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index f95c473..ccc13c4 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -6530,14 +6530,9 @@ qemudDomainMigratePerform (virDomainPtr dom,
> event = NULL;
> }
>
> - if (resource > 0) {
> - /* Issue migrate_set_speed command. Don't worry if it fails. */
> - snprintf (cmd, sizeof cmd, "migrate_set_speed %lum", resource);
> - qemudMonitorCommand (vm, cmd, &info);
> -
> - DEBUG ("%s: migrate_set_speed reply: %s", vm->def->name, info);
> - VIR_FREE (info);
> - }
> + if (resource > 0 &&
> + qemuMonitorSetMigrationSpeed(vm, resource) < 0)
> + goto cleanup;
Checking for errors is new, but makes sense
>
> /* Issue the migrate command. */
> safe_uri = qemudEscapeMonitorArg (uri);
> diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
> index f35b1ef..d9227a2 100644
> --- a/src/qemu/qemu_monitor_text.c
> +++ b/src/qemu/qemu_monitor_text.c
> @@ -969,3 +969,31 @@ int qemuMonitorSavePhysicalMemory(const virDomainObjPtr vm,
> {
> return qemuMonitorSaveMemory(vm, "pmemsave", offset, length, path);
> }
> +
> +
> +int qemuMonitorSetMigrationSpeed(const virDomainObjPtr vm,
> + unsigned long bandwidth)
> +{
> + char *cmd = NULL;
> + char *info = NULL;
> + int ret = -1;
> +
> + if (virAsprintf(&cmd, "migrate_set_speed %lum", bandwidth) < 0) {
> + virReportOOMError(NULL);
> + goto cleanup;
> + }
> +
> + if (qemudMonitorCommand (vm, cmd, &info) < 0) {
^
> + qemudReportError(NULL, NULL, NULL, VIR_ERR_OPERATION_FAILED,
> + "%s", _("could restrict migration speed"));
> + goto cleanup;
> + }
> +
> + DEBUG ("%s: migrate_set_speed reply: %s", vm->def->name, info);
^
> + ret = 0;
> +
> +cleanup:
> + VIR_FREE (info);
^
Whitespace, no big deal
ACK
Cheers,
Mark.
More information about the libvir-list
mailing list