mirror of
https://github.com/mii443/qemu.git
synced 2025-08-22 15:15:46 +00:00
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>
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user