On Fri, Mar 19, 2010 at 04:51:11PM +0100, Jiri Denemark wrote:
> This API call sets maximum tolerable time for which the domain
is allowed to be
> paused at the end of live migration. It's supposed to be called while the
> domain is being live-migrated as a reaction to migration progress.
Changes in version 3:
- use milliseconds instead of nanoseconds both internally and in API
- correct suffix for qemu monitor commands
> Changes in version 2:
> - API renamed to reflect it's maximum downtime
> - new flags parameter for the future
> - qemu implementation was fixed so that the call is allowed iff the domain is
> being migrated
> - --downtime parameter of virsh migrate command was removed in favor of new
> virsh migrate-setmaxdowntime which can be run independently
> - virsh accepts downtime as nanoseconds instead of floating-point seconds
> (shells don't deal with floating-point numbers well)
Version 3 diff follows:
src/libvirt.c | 2 +-
src/qemu/qemu_driver.c | 8 ++++----
src/qemu/qemu_monitor_json.c | 2 +-
src/qemu/qemu_monitor_text.c | 2 +-
tools/virsh.c | 2 +-
tools/virsh.pod | 2 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/libvirt.c b/src/libvirt.c
index 07837a3..178dbc1 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -11270,7 +11270,7 @@ error:
/**
* virDomainMigrateSetMaxDowntime:
* @domain: a domain object
- * @downtime: maximum tolerable downtime for live migration, in nanoseconds
+ * @downtime: maximum tolerable downtime for live migration, in milliseconds
* @flags: fine-tuning flags, currently unused, use 0
*
* Sets maximum tolerable time for which the domain is allowed to be paused
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 322fb3f..2a7b5c0 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4074,13 +4074,13 @@ qemuDomainWaitForMigrationComplete(struct qemud_driver *driver,
virDomainObjPtr
if (qemuDomainMigrateOffline(driver, vm) < 0)
VIR_WARN0("Unable to pause domain");
} else if (priv->jobSignals & QEMU_JOB_SIGNAL_MIGRATE_DOWNTIME) {
- unsigned long long ns = priv->jobSignalsData.migrateDowntime;
+ unsigned long long ms = priv->jobSignalsData.migrateDowntime;
priv->jobSignals ^= QEMU_JOB_SIGNAL_MIGRATE_DOWNTIME;
priv->jobSignalsData.migrateDowntime = 0;
- VIR_DEBUG("Setting migration downtime to %lluns", ns);
+ VIR_DEBUG("Setting migration downtime to %llums", ms);
qemuDomainObjEnterMonitorWithDriver(driver, vm);
- rc = qemuMonitorSetMigrationDowntime(priv->mon, ns);
+ rc = qemuMonitorSetMigrationDowntime(priv->mon, ms);
qemuDomainObjExitMonitorWithDriver(driver, vm);
if (rc < 0)
VIR_WARN0("Unable to set migration downtime");
@@ -9574,7 +9574,7 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom,
goto cleanup;
}
- VIR_DEBUG("Requesting migration downtime change to %lluns", downtime);
+ VIR_DEBUG("Requesting migration downtime change to %llums", downtime);
priv->jobSignals |= QEMU_JOB_SIGNAL_MIGRATE_DOWNTIME;
priv->jobSignalsData.migrateDowntime = downtime;
ret = 0;
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index b259452..4ae8093 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -1095,7 +1095,7 @@ int qemuMonitorJSONSetMigrationDowntime(qemuMonitorPtr mon,
char *downtimestr;
virJSONValuePtr cmd;
virJSONValuePtr reply = NULL;
- if (virAsprintf(&downtimestr, "%llun", downtime) < 0) {
+ if (virAsprintf(&downtimestr, "%llums", downtime) < 0) {
virReportOOMError();
return -1;
}
diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
index ca2fc97..1596e59 100644
--- a/src/qemu/qemu_monitor_text.c
+++ b/src/qemu/qemu_monitor_text.c
@@ -1006,7 +1006,7 @@ int qemuMonitorTextSetMigrationDowntime(qemuMonitorPtr mon,
char *info = NULL;
int ret = -1;
- if (virAsprintf(&cmd, "migrate_set_downtime %llun", downtime) < 0)
{
+ if (virAsprintf(&cmd, "migrate_set_downtime %llums", downtime) < 0)
{
virReportOOMError();
goto cleanup;
}
diff --git a/tools/virsh.c b/tools/virsh.c
index 3dd9314..cfcc86e 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -2840,7 +2840,7 @@ static const vshCmdInfo info_migrate_setmaxdowntime[] = {
static const vshCmdOptDef opts_migrate_setmaxdowntime[] = {
{"domain", VSH_OT_DATA, VSH_OFLAG_REQ, N_("domain name, id or
uuid")},
- {"downtime", VSH_OT_DATA, VSH_OFLAG_REQ, N_("maximum tolerable
downtime (in nanoseconds) for migration")},
+ {"downtime", VSH_OT_DATA, VSH_OFLAG_REQ, N_("maximum tolerable
downtime (in milliseconds) for migration")},
{NULL, 0, 0, NULL}
};
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 1c7cfce..a6298dd 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -337,7 +337,7 @@ migration URI, which usually can be omitted.
=item B<migrate-setmaxdowntime> I<domain-id> I<downtime>
Set maximum tolerable downtime for a domain which is being live-migrated to
-another host. The I<downtime> is a number of nanoseconds the guest is allowed
+another host. The I<downtime> is a number of milliseconds the guest is allowed
to be down at the end of live migration.
=item B<reboot> I<domain-id>
ACK,
looks fine to me now !
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/