diff mbox series

migration: Show downtime during postcopy phase

Message ID 20221215222448.1893656-1-peterx@redhat.com
State New
Headers show
Series migration: Show downtime during postcopy phase | expand

Commit Message

Peter Xu Dec. 15, 2022, 10:24 p.m. UTC
The downtime should be displayed during postcopy phase because the
switchover phase is done.  OTOH it's weird to show "expected downtime"
which can confuse what does that mean if the switchover has already
happened anyway.

This is a slight ABI change on QMP, but I assume it shouldn't affect
anyone.

Signed-off-by: Peter Xu <peterx@redhat.com>
---
 migration/migration.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

Comments

Leonardo Bras Soares Passos Dec. 20, 2022, 4:42 p.m. UTC | #1
On Thu, Dec 15, 2022 at 7:24 PM Peter Xu <peterx@redhat.com> wrote:
>
> The downtime should be displayed during postcopy phase because the
> switchover phase is done.  OTOH it's weird to show "expected downtime"
> which can confuse what does that mean if the switchover has already
> happened anyway.
>
> This is a slight ABI change on QMP, but I assume it shouldn't affect
> anyone.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  migration/migration.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/migration/migration.c b/migration/migration.c
> index 64f74534e2..993782598f 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -1077,20 +1077,30 @@ bool migration_is_running(int state)
>      }
>  }
>
> +static bool migrate_show_downtime(MigrationState *s)
> +{
> +    return (s->state == MIGRATION_STATUS_COMPLETED) || migration_in_postcopy();
> +}
> +
>  static void populate_time_info(MigrationInfo *info, MigrationState *s)
>  {
>      info->has_status = true;
>      info->has_setup_time = true;
>      info->setup_time = s->setup_time;
> +
>      if (s->state == MIGRATION_STATUS_COMPLETED) {
>          info->has_total_time = true;
>          info->total_time = s->total_time;
> -        info->has_downtime = true;
> -        info->downtime = s->downtime;
>      } else {
>          info->has_total_time = true;
>          info->total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) -
>                             s->start_time;
> +    }
> +
> +    if (migrate_show_downtime(s)) {
> +        info->has_downtime = true;
> +        info->downtime = s->downtime;
> +    } else {
>          info->has_expected_downtime = true;
>          info->expected_downtime = s->expected_downtime;
>      }
> --
> 2.37.3
>

FWIW:
Reviewed-by: Leonardo Bras <leobras@redhat.com>
diff mbox series

Patch

diff --git a/migration/migration.c b/migration/migration.c
index 64f74534e2..993782598f 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1077,20 +1077,30 @@  bool migration_is_running(int state)
     }
 }
 
+static bool migrate_show_downtime(MigrationState *s)
+{
+    return (s->state == MIGRATION_STATUS_COMPLETED) || migration_in_postcopy();
+}
+
 static void populate_time_info(MigrationInfo *info, MigrationState *s)
 {
     info->has_status = true;
     info->has_setup_time = true;
     info->setup_time = s->setup_time;
+
     if (s->state == MIGRATION_STATUS_COMPLETED) {
         info->has_total_time = true;
         info->total_time = s->total_time;
-        info->has_downtime = true;
-        info->downtime = s->downtime;
     } else {
         info->has_total_time = true;
         info->total_time = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) -
                            s->start_time;
+    }
+
+    if (migrate_show_downtime(s)) {
+        info->has_downtime = true;
+        info->downtime = s->downtime;
+    } else {
         info->has_expected_downtime = true;
         info->expected_downtime = s->expected_downtime;
     }