[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 03/11] migration: Introduce migrate_has_error()
From: |
Peter Xu |
Subject: |
[PATCH v2 03/11] migration: Introduce migrate_has_error() |
Date: |
Tue, 12 Sep 2023 18:21:37 -0400 |
Introduce a helper to detect whether MigrationState.error is set for
whatever reason. It is intended to not taking the error_mutex here because
neither do we reference the pointer, nor do we modify the pointer. State
why it's safe to do so.
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>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
migration/migration.h | 1 +
migration/migration.c | 7 +++++++
2 files changed, 8 insertions(+)
diff --git a/migration/migration.h b/migration/migration.h
index 1eefa563c4..b50e97a098 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -466,6 +466,7 @@ bool migration_has_all_channels(void);
uint64_t migrate_max_downtime(void);
void migrate_set_error(MigrationState *s, Error *error);
+bool migrate_has_error(MigrationState *s);
void migrate_fd_connect(MigrationState *s, Error *error_in);
diff --git a/migration/migration.c b/migration/migration.c
index 4b4dba5b12..7bd056a4b5 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1237,6 +1237,13 @@ void migrate_set_error(MigrationState *s, 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);
--
2.41.0
- [PATCH v2 00/11] migration: Better error handling in rp thread, allow failures in recover, Peter Xu, 2023/09/12
- [PATCH v2 01/11] migration: Display error in query-migrate irrelevant of status, Peter Xu, 2023/09/12
- [PATCH v2 02/11] migration: Let migrate_set_error() take ownership, Peter Xu, 2023/09/12
- [PATCH v2 05/11] migration: Deliver return path file error to migrate state too, Peter Xu, 2023/09/12
- [PATCH v2 04/11] migration: Refactor error handling in source return path, Peter Xu, 2023/09/12
- [PATCH v2 08/11] migration: Add migration_rp_wait|kick(), Peter Xu, 2023/09/12
- [PATCH v2 03/11] migration: Introduce migrate_has_error(),
Peter Xu <=
- [PATCH v2 06/11] qemufile: Always return a verbose error, Peter Xu, 2023/09/12
- [PATCH v2 07/11] migration: Remember num of ramblocks to sync during recovery, Peter Xu, 2023/09/12
- [PATCH v2 09/11] migration: Allow network to fail even during recovery, Peter Xu, 2023/09/12
- [PATCH v2 11/11] tests/migration-test: Add a test for postcopy hangs during RECOVER, Peter Xu, 2023/09/12
- [PATCH v2 10/11] migration: Allow RECOVER->PAUSED convertion for dest qemu, Peter Xu, 2023/09/12