diff --git a/include/migration/misc.h b/include/migration/misc.h index e26d418a6e..1cd6cfd7f7 100644 --- a/include/migration/misc.h +++ b/include/migration/misc.h @@ -59,10 +59,22 @@ void migration_shutdown(void); bool migration_is_running(void); bool migration_thread_is_self(void); +/* + * Notifiers may receive events in any of the following orders: + * + * - MIG_EVENT_PRECOPY_SETUP [-> MIG_EVENT_POSTCOPY_START] + * -> MIG_EVENT_PRECOPY_DONE + * + * - MIG_EVENT_PRECOPY_SETUP [-> MIG_EVENT_POSTCOPY_START] + * -> MIG_EVENT_PRECOPY_FAILED + * + * - MIG_EVENT_PRECOPY_FAILED + */ typedef enum MigrationEventType { MIG_EVENT_PRECOPY_SETUP, MIG_EVENT_PRECOPY_DONE, MIG_EVENT_PRECOPY_FAILED, + MIG_EVENT_POSTCOPY_START, MIG_EVENT_MAX } MigrationEventType; @@ -81,10 +93,6 @@ typedef int (*MigrationNotifyFunc)(NotifierWithReturn *notify, /* * Register the notifier @notify to be called when a migration event occurs * for MIG_MODE_NORMAL, as specified by the MigrationEvent passed to @func. - * Notifiers may receive events in any of the following orders: - * - MIG_EVENT_PRECOPY_SETUP -> MIG_EVENT_PRECOPY_DONE - * - MIG_EVENT_PRECOPY_SETUP -> MIG_EVENT_PRECOPY_FAILED - * - MIG_EVENT_PRECOPY_FAILED */ void migration_add_notifier(NotifierWithReturn *notify, MigrationNotifyFunc func); diff --git a/migration/migration.c b/migration/migration.c index 341b9be80e..bd24006c1a 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2591,7 +2591,7 @@ static int postcopy_start(MigrationState *ms, Error **errp) * at the transition to postcopy and after the device state; in particular * spice needs to trigger a transition now */ - migration_call_notifiers(MIG_EVENT_PRECOPY_DONE, NULL); + migration_call_notifiers(MIG_EVENT_POSTCOPY_START, NULL); migration_downtime_end(ms); @@ -2640,7 +2640,6 @@ fail: migrate_set_state(&ms->state, ms->state, MIGRATION_STATUS_FAILED); } migration_block_activate(NULL); - migration_call_notifiers(MIG_EVENT_PRECOPY_FAILED, NULL); bql_unlock(); return -1; } diff --git a/ui/spice-core.c b/ui/spice-core.c index 8a6050f4ae..ce3c2954e3 100644 --- a/ui/spice-core.c +++ b/ui/spice-core.c @@ -585,7 +585,8 @@ static int migration_state_notifier(NotifierWithReturn *notifier, if (e->type == MIG_EVENT_PRECOPY_SETUP) { spice_server_migrate_start(spice_server); - } else if (e->type == MIG_EVENT_PRECOPY_DONE) { + } else if (e->type == MIG_EVENT_PRECOPY_DONE || + e->type == MIG_EVENT_POSTCOPY_START) { spice_server_migrate_end(spice_server, true); spice_have_target_host = false; } else if (e->type == MIG_EVENT_PRECOPY_FAILED) {