diff options
| author | Peter Xu <peterx@redhat.com> | 2023-10-30 12:33:45 -0400 |
|---|---|---|
| committer | Juan Quintela <quintela@redhat.com> | 2023-11-01 16:13:58 +0100 |
| commit | 93bdf888fa5c1b3972e337c8c8fbe7d2bcd29900 (patch) | |
| tree | 24e22945b839e58d0a579525243246d890837574 | |
| parent | 3c80f14272057f77c87fb9971e8c4f603a03289a (diff) | |
| download | focaccia-qemu-93bdf888fa5c1b3972e337c8c8fbe7d2bcd29900.tar.gz focaccia-qemu-93bdf888fa5c1b3972e337c8c8fbe7d2bcd29900.zip | |
migration: migration_stop_vm() helper
Provide a helper for non-COLO use case of migration to stop a VM. This prepares for adding some downtime relevant tracepoints to migration, where they may or may not apply to COLO. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231030163346.765724-5-peterx@redhat.com>
| -rw-r--r-- | migration/migration.c | 11 | ||||
| -rw-r--r-- | migration/migration.h | 2 |
2 files changed, 10 insertions, 3 deletions
diff --git a/migration/migration.c b/migration/migration.c index 8aac0c753e..3e38294485 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -149,6 +149,11 @@ static gint page_request_addr_cmp(gconstpointer ap, gconstpointer bp) return (a > b) - (a < b); } +int migration_stop_vm(RunState state) +{ + return vm_stop_force_state(state); +} + void migration_object_init(void) { /* This can only be called once. */ @@ -2169,7 +2174,7 @@ static int postcopy_start(MigrationState *ms, Error **errp) qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL); global_state_store(); - ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE); + ret = migration_stop_vm(RUN_STATE_FINISH_MIGRATE); if (ret < 0) { goto fail; } @@ -2371,7 +2376,7 @@ static int migration_completion_precopy(MigrationState *s, s->vm_old_state = runstate_get(); global_state_store(); - ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE); + ret = migration_stop_vm(RUN_STATE_FINISH_MIGRATE); trace_migration_completion_vm_stop(ret); if (ret < 0) { goto out_unlock; @@ -3222,7 +3227,7 @@ static void *bg_migration_thread(void *opaque) global_state_store(); /* Forcibly stop VM before saving state of vCPUs and devices */ - if (vm_stop_force_state(RUN_STATE_PAUSED)) { + if (migration_stop_vm(RUN_STATE_PAUSED)) { goto fail; } /* diff --git a/migration/migration.h b/migration/migration.h index ae82004892..5944107ad5 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -544,4 +544,6 @@ void migration_rp_wait(MigrationState *s); */ void migration_rp_kick(MigrationState *s); +int migration_stop_vm(RunState state); + #endif |