[libvirt] [PATCH v2 0/5] Introduce virDomainMigrateSetMaxDowntime API

Daniel Veillard veillard at redhat.com
Fri Mar 19 16:42:29 UTC 2010


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 at veillard.com  | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list