[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 20/33] migration: push Error **errp into global_state_store()
From: |
Daniel P . Berrangé |
Subject: |
[PATCH 20/33] migration: push Error **errp into global_state_store() |
Date: |
Thu, 4 Feb 2021 17:18:54 +0000 |
This is an incremental step in converting vmstate loading code to report
via Error objects instead of printing directly to the console/monitor.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
include/migration/global_state.h | 2 +-
migration/global_state.c | 6 +++---
migration/migration.c | 8 ++++++--
migration/savevm.c | 5 ++---
4 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/include/migration/global_state.h b/include/migration/global_state.h
index 945eb35d5b..eeade88ef8 100644
--- a/include/migration/global_state.h
+++ b/include/migration/global_state.h
@@ -16,7 +16,7 @@
#include "qapi/qapi-types-run-state.h"
void register_global_state(void);
-int global_state_store(void);
+int global_state_store(Error **errp);
void global_state_store_running(void);
bool global_state_received(void);
RunState global_state_get_runstate(void);
diff --git a/migration/global_state.c b/migration/global_state.c
index a33947ca32..36fda38aad 100644
--- a/migration/global_state.c
+++ b/migration/global_state.c
@@ -29,13 +29,13 @@ typedef struct {
static GlobalState global_state;
-int global_state_store(void)
+int global_state_store(Error **errp)
{
if (!runstate_store((char *)global_state.runstate,
sizeof(global_state.runstate))) {
- error_report("runstate name too big: %s", global_state.runstate);
+ error_setg(errp, "runstate name too big: %s", global_state.runstate);
trace_migrate_state_too_big();
- return -EINVAL;
+ return -1;
}
return 0;
}
diff --git a/migration/migration.c b/migration/migration.c
index b9cf56e61f..395a1b10f5 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2811,6 +2811,7 @@ static int postcopy_start(MigrationState *ms)
int64_t bandwidth = migrate_max_postcopy_bandwidth();
bool restart_block = false;
int cur_state = MIGRATION_STATUS_ACTIVE;
+ Error *local_err = NULL;
if (!migrate_pause_before_switchover()) {
migrate_set_state(&ms->state, MIGRATION_STATUS_ACTIVE,
MIGRATION_STATUS_POSTCOPY_ACTIVE);
@@ -2821,9 +2822,10 @@ static int postcopy_start(MigrationState *ms)
trace_postcopy_start_set_run();
qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL);
- global_state_store();
+ global_state_store(&local_err);
ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
if (ret < 0) {
+ error_report_err(local_err);
goto fail;
}
@@ -3030,11 +3032,12 @@ static void migration_completion(MigrationState *s)
int current_active_state = s->state;
if (s->state == MIGRATION_STATUS_ACTIVE) {
+ Error *local_err = NULL;
qemu_mutex_lock_iothread();
s->downtime_start = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL);
s->vm_was_running = runstate_is_running();
- ret = global_state_store();
+ ret = global_state_store(&local_err);
if (!ret) {
bool inactivate = !migrate_colo_enabled();
@@ -3055,6 +3058,7 @@ static void migration_completion(MigrationState *s)
qemu_mutex_unlock_iothread();
if (ret < 0) {
+ error_report_err(local_err);
goto fail;
}
} else if (s->state == MIGRATION_STATUS_POSTCOPY_ACTIVE) {
diff --git a/migration/savevm.c b/migration/savevm.c
index 289a3d55bb..c18b7e6033 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2828,9 +2828,8 @@ bool save_snapshot(const char *name, bool overwrite,
const char *vmstate,
saved_vm_running = runstate_is_running();
- ret = global_state_store();
- if (ret) {
- error_setg(errp, "Error saving global state");
+ ret = global_state_store(errp);
+ if (ret < 0) {
return false;
}
vm_stop(RUN_STATE_SAVE_VM);
--
2.29.2
- [PATCH 15/33] migration: make loadvm_postcopy_handle_resume() void, (continued)
- [PATCH 15/33] migration: make loadvm_postcopy_handle_resume() void, Daniel P . Berrangé, 2021/02/04
- [PATCH 14/33] migration: push Error **errp into loadvm_postcopy_ram_handle_discard(), Daniel P . Berrangé, 2021/02/04
- [PATCH 16/33] migration: push Error **errp into loadvm_handle_recv_bitmap(), Daniel P . Berrangé, 2021/02/04
- [PATCH 17/33] migration: push Error **errp into loadvm_process_enable_colo(), Daniel P . Berrangé, 2021/02/04
- [PATCH 18/33] migration: push Error **errp into colo_init_ram_cache(), Daniel P . Berrangé, 2021/02/04
- [PATCH 23/33] migration: simplify some error reporting in save_snapshot(), Daniel P . Berrangé, 2021/02/04
- [PATCH 19/33] migration: push Error **errp into check_section_footer(), Daniel P . Berrangé, 2021/02/04
- [PATCH 21/33] migration: remove error reporting from qemu_fopen_bdrv() callers, Daniel P . Berrangé, 2021/02/04
- [PATCH 20/33] migration: push Error **errp into global_state_store(),
Daniel P . Berrangé <=
- [PATCH 25/33] migration: push Error **errp into qemu_savevm_state_complete_precopy(), Daniel P . Berrangé, 2021/02/04
- [PATCH 22/33] migration: push Error **errp into qemu_savevm_state_iterate(), Daniel P . Berrangé, 2021/02/04
- [PATCH 28/33] migration: push Error **errp into qemu_savevm_send_packaged(), Daniel P . Berrangé, 2021/02/04
- [PATCH 31/33] migration: push Error **errp into qemu_savevm_state_resume_prepare(), Daniel P . Berrangé, 2021/02/04
- [PATCH 26/33] migration: push Error **errp into qemu_savevm_state_complete_precopy_non_iterable(), Daniel P . Berrangé, 2021/02/04
- [PATCH 32/33] migration: push Error **errp into postcopy_resume_handshake(), Daniel P . Berrangé, 2021/02/04
- [PATCH 27/33] migration: push Error **errp into qemu_savevm_state_complete_precopy(), Daniel P . Berrangé, 2021/02/04
- [PATCH 24/33] migration: push Error **errp into qemu_savevm_state_setup(), Daniel P . Berrangé, 2021/02/04
- [PATCH 29/33] migration: push Error **errp into qemu_savevm_live_state(), Daniel P . Berrangé, 2021/02/04
- [PATCH 30/33] migration: push Error **errp into qemu_save_device_state(), Daniel P . Berrangé, 2021/02/04