From 9708192479d7f6507392a338f8f43b3be4c8188d Mon Sep 17 00:00:00 2001 From: qihao Date: Mon, 18 Dec 2023 15:19:48 +0800 Subject: [PATCH] migration: Set downtime_start even for postcopy cheery-pick from 62f5da7dd10a594fb30cebb5569dc738456f7131 Postcopy calculates its downtime separately. It always sets MigrationState.downtime properly, but not MigrationState.downtime_start. Make postcopy do the same as other modes on properly recording the timestamp when the VM is going to be stopped. Drop the temporary variable in postcopy_start() along the way. Signed-off-by: Peter Xu Reviewed-by: Fabiano Rosas Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela Message-ID: <20231030163346.765724-2-peterx@redhat.com> Signed-off-by: qihao_yewu --- migration/migration.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 6b5445853a..7ca5b58839 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2989,7 +2989,6 @@ static int postcopy_start(MigrationState *ms) int ret; QIOChannelBuffer *bioc; QEMUFile *fb; - int64_t time_at_stop = qemu_clock_get_ms(QEMU_CLOCK_REALTIME); int64_t bandwidth = migrate_max_postcopy_bandwidth(); bool restart_block = false; int cur_state = MIGRATION_STATUS_ACTIVE; @@ -3002,6 +3001,8 @@ static int postcopy_start(MigrationState *ms) qemu_mutex_lock_iothread(); trace_postcopy_start_set_run(); + ms->downtime_start = qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL); global_state_store(); ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE); @@ -3112,7 +3113,7 @@ static int postcopy_start(MigrationState *ms) ms->postcopy_after_devices = true; notifier_list_notify(&migration_state_notifiers, ms); - ms->downtime = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) - time_at_stop; + ms->downtime = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) - ms->downtime_start; qemu_mutex_unlock_iothread(); -- 2.27.0