migration: provide an error message to migration_cancel()

This avoids to call migrate_get_current() in the caller function
whereas migration_cancel() already needs the pointer to the current
migration state.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
Laurent Vivier 2021-09-29 16:43:10 +02:00 committed by Juan Quintela
parent 741bdeb1d5
commit 458fecca80
3 changed files with 8 additions and 6 deletions

View File

@ -215,8 +215,11 @@ void migration_object_init(void)
dirty_bitmap_mig_init(); dirty_bitmap_mig_init();
} }
void migration_cancel(void) void migration_cancel(const Error *error)
{ {
if (error) {
migrate_set_error(current_migration, error);
}
migrate_fd_cancel(current_migration); migrate_fd_cancel(current_migration);
} }
@ -226,7 +229,7 @@ void migration_shutdown(void)
* Cancel the current migration - that will (eventually) * Cancel the current migration - that will (eventually)
* stop the migration using this structure * stop the migration using this structure
*/ */
migration_cancel(); migration_cancel(NULL);
object_unref(OBJECT(current_migration)); object_unref(OBJECT(current_migration));
/* /*
@ -2334,7 +2337,7 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
void qmp_migrate_cancel(Error **errp) void qmp_migrate_cancel(Error **errp)
{ {
migration_cancel(); migration_cancel(NULL);
} }
void qmp_migrate_continue(MigrationStatus state, Error **errp) void qmp_migrate_continue(MigrationStatus state, Error **errp)

View File

@ -388,7 +388,7 @@ int foreach_not_ignored_block(RAMBlockIterFunc func, void *opaque);
void migration_make_urgent_request(void); void migration_make_urgent_request(void);
void migration_consume_urgent_request(void); void migration_consume_urgent_request(void);
bool migration_rate_limit(void); bool migration_rate_limit(void);
void migration_cancel(void); void migration_cancel(const Error *error);
void populate_vfio_info(MigrationInfo *info); void populate_vfio_info(MigrationInfo *info);

View File

@ -4323,9 +4323,8 @@ static void ram_mig_ram_block_resized(RAMBlockNotifier *n, void *host,
* Abort and indicate a proper reason. * Abort and indicate a proper reason.
*/ */
error_setg(&err, "RAM block '%s' resized during precopy.", rb->idstr); error_setg(&err, "RAM block '%s' resized during precopy.", rb->idstr);
migrate_set_error(migrate_get_current(), err); migration_cancel(err);
error_free(err); error_free(err);
migration_cancel();
} }
switch (ps) { switch (ps) {