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é <berra...@redhat.com> --- include/migration/colo.h | 2 +- migration/migration.c | 6 +++--- migration/savevm.c | 25 +++++++++++-------------- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/include/migration/colo.h b/include/migration/colo.h index 768e1f04c3..1d38191360 100644 --- a/include/migration/colo.h +++ b/include/migration/colo.h @@ -25,7 +25,7 @@ void migrate_start_colo_process(MigrationState *s); bool migration_in_colo_state(void); /* loadvm */ -int migration_incoming_enable_colo(void); +int migration_incoming_enable_colo(Error **errp); void migration_incoming_disable_colo(void); bool migration_incoming_colo_enabled(void); void *colo_process_incoming_thread(void *opaque); diff --git a/migration/migration.c b/migration/migration.c index 287a18d269..b9cf56e61f 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -397,11 +397,11 @@ void migration_incoming_disable_colo(void) migration_colo_enabled = false; } -int migration_incoming_enable_colo(void) +int migration_incoming_enable_colo(Error **errp) { if (ram_block_discard_disable(true)) { - error_report("COLO: cannot disable RAM discard"); - return -EBUSY; + error_setg(errp, "COLO: cannot disable RAM discard"); + return -1; } migration_colo_enabled = true; return 0; diff --git a/migration/savevm.c b/migration/savevm.c index b41c812188..c59e76b478 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2212,15 +2212,18 @@ static int loadvm_handle_recv_bitmap(MigrationIncomingState *mis, return 0; } -static int loadvm_process_enable_colo(MigrationIncomingState *mis) +static int loadvm_process_enable_colo(MigrationIncomingState *mis, + Error **errp) { - int ret = migration_incoming_enable_colo(); + int ret; + if (migration_incoming_enable_colo(errp) < 0) { + return -1; + } - if (!ret) { - ret = colo_init_ram_cache(); - if (ret) { - migration_incoming_disable_colo(); - } + ret = colo_init_ram_cache(); + if (ret < 0) { + error_setg(errp, "failed to init colo RAM cache: %d", ret); + migration_incoming_disable_colo(); } return ret; } @@ -2237,7 +2240,6 @@ static int loadvm_process_command(QEMUFile *f, Error **errp) uint16_t cmd; uint16_t len; uint32_t tmp32; - int ret; cmd = qemu_get_be16(f); len = qemu_get_be16(f); @@ -2310,12 +2312,7 @@ static int loadvm_process_command(QEMUFile *f, Error **errp) return loadvm_handle_recv_bitmap(mis, len, errp); case MIG_CMD_ENABLE_COLO: - ret = loadvm_process_enable_colo(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", ret); - return -1; - } - return ret; + return loadvm_process_enable_colo(mis, errp); } return 0; -- 2.29.2