aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2023-10-04 18:02:32 -0400
committerJuan Quintela <quintela@redhat.com>2023-10-11 11:17:05 +0200
commit2b2f6f411efa83c70409fa6de2e61ec28221c757 (patch)
tree5757612585a791b693ed3d66cff0e926fb1bd3c7
parentc94143e587875bd70c280d72b1b70d9eefaf6854 (diff)
downloadqemu-2b2f6f411efa83c70409fa6de2e61ec28221c757.zip
qemu-2b2f6f411efa83c70409fa6de2e61ec28221c757.tar.gz
qemu-2b2f6f411efa83c70409fa6de2e61ec28221c757.tar.bz2
migration: Introduce migrate_has_error()
Introduce a helper to detect whether MigrationState.error is set for whatever reason. This is preparation work for any thread (e.g. source return path thread) to setup errors in an unified way to MigrationState, rather than relying on its own way to set errors (mark_source_rp_bad()). Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231004220240.167175-3-peterx@redhat.com>
-rw-r--r--migration/migration.c7
-rw-r--r--migration/migration.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/migration/migration.c b/migration/migration.c
index 57f9e9e..409eb3e 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1234,6 +1234,13 @@ void migrate_set_error(MigrationState *s, const Error *error)
}
}
+bool migrate_has_error(MigrationState *s)
+{
+ /* The lock is not helpful here, but still follow the rule */
+ QEMU_LOCK_GUARD(&s->error_mutex);
+ return qatomic_read(&s->error);
+}
+
static void migrate_error_free(MigrationState *s)
{
QEMU_LOCK_GUARD(&s->error_mutex);
diff --git a/migration/migration.h b/migration/migration.h
index 972597f..4106a1d 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -476,6 +476,7 @@ bool migration_has_all_channels(void);
uint64_t migrate_max_downtime(void);
void migrate_set_error(MigrationState *s, const Error *error);
+bool migrate_has_error(MigrationState *s);
void migrate_fd_connect(MigrationState *s, Error *error_in);