* 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; /* 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); + VIR_FREE(cmd); + return ret; +} diff --git a/src/qemu/qemu_monitor_text.h b/src/qemu/qemu_monitor_text.h index a047eba..0591f3c 100644 --- a/src/qemu/qemu_monitor_text.h +++ b/src/qemu/qemu_monitor_text.h @@ -109,4 +109,7 @@ int qemuMonitorSavePhysicalMemory(const virDomainObjPtr vm, size_t length, const char *path); +int qemuMonitorSetMigrationSpeed(const virDomainObjPtr vm, + unsigned long bandwidth); + #endif /* QEMU_MONITOR_TEXT_H */ -- 1.6.2.5 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list