diff options
| author | Steve Sistare <steven.sistare@oracle.com> | 2024-02-22 09:28:30 -0800 |
|---|---|---|
| committer | Peter Xu <peterx@redhat.com> | 2024-02-28 11:31:28 +0800 |
| commit | 9d9babf78d8f0a2f26b8dd5de3767bd4a4e2020e (patch) | |
| tree | 81614f1d26e880cb76cd8d2b4157e7ea1b52adb7 /ui | |
| parent | 3e7757301cc93eaca47cad855630467804b1a2a4 (diff) | |
| download | focaccia-qemu-9d9babf78d8f0a2f26b8dd5de3767bd4a4e2020e.tar.gz focaccia-qemu-9d9babf78d8f0a2f26b8dd5de3767bd4a4e2020e.zip | |
migration: MigrationEvent for notifiers
Passing MigrationState to notifiers is unsound because they could access unstable migration state internals or even modify the state. Instead, pass the minimal info needed in a new MigrationEvent struct, which could be extended in the future if needed. Suggested-by: Peter Xu <peterx@redhat.com> Signed-off-by: Steve Sistare <steven.sistare@oracle.com> Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Link: https://lore.kernel.org/r/1708622920-68779-5-git-send-email-steven.sistare@oracle.com Signed-off-by: Peter Xu <peterx@redhat.com>
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/spice-core.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/ui/spice-core.c b/ui/spice-core.c index b3cd229023..0a59876da2 100644 --- a/ui/spice-core.c +++ b/ui/spice-core.c @@ -571,19 +571,18 @@ static SpiceInfo *qmp_query_spice_real(Error **errp) static int migration_state_notifier(NotifierWithReturn *notifier, void *data, Error **errp) { - MigrationState *s = data; + MigrationEvent *e = data; if (!spice_have_target_host) { return 0; } - if (migration_in_setup(s)) { + if (e->type == MIG_EVENT_PRECOPY_SETUP) { spice_server_migrate_start(spice_server); - } else if (migration_has_finished(s) || - migration_in_postcopy_after_devices(s)) { + } else if (e->type == MIG_EVENT_PRECOPY_DONE) { spice_server_migrate_end(spice_server, true); spice_have_target_host = false; - } else if (migration_has_failed(s)) { + } else if (e->type == MIG_EVENT_PRECOPY_FAILED) { spice_server_migrate_end(spice_server, false); spice_have_target_host = false; } |