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> --- migration/savevm.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 450c36994f..d9170b4364 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2121,18 +2121,18 @@ static int loadvm_postcopy_handle_resume(MigrationIncomingState *mis) * LOADVM_QUIT: success, but stop * -1: error */ -static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis) +static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error **errp) { int ret; size_t length; QIOChannelBuffer *bioc; - Error *local_err = NULL; length = qemu_get_be32(mis->from_src_file); trace_loadvm_handle_cmd_packaged(length); if (length > MAX_VM_CMD_PACKAGED_SIZE) { - error_report("Unreasonably large packaged state: %zu", length); + error_setg(errp, "Unreasonably large packaged state: %zu > %d", + length, MAX_VM_CMD_PACKAGED_SIZE); return -1; } @@ -2143,20 +2143,17 @@ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis) length); if (ret != length) { object_unref(OBJECT(bioc)); - error_report("CMD_PACKAGED: Buffer receive fail ret=%d length=%zu", - ret, length); - return (ret < 0) ? ret : -EAGAIN; + error_setg(errp, "CMD_PACKAGED: Buffer receive fail ret=%d length=%zu", + ret, length); + return -1; } bioc->usage += length; trace_loadvm_handle_cmd_packaged_received(ret); QEMUFile *packf = qemu_fopen_channel_input(QIO_CHANNEL(bioc)); - ret = qemu_loadvm_state_main(packf, mis, &local_err); + ret = qemu_loadvm_state_main(packf, mis, errp); trace_loadvm_handle_cmd_packaged_main(ret); - if (ret < 0) { - error_report_err(local_err); - } qemu_fclose(packf); object_unref(OBJECT(bioc)); @@ -2282,12 +2279,7 @@ static int loadvm_process_command(QEMUFile *f, Error **errp) break; case MIG_CMD_PACKAGED: - ret = loadvm_handle_cmd_packaged(mis); - if (ret < 0) { - error_setg(errp, "Failed to load device state command: %d", ret); - return -1; - } - return ret; + return loadvm_handle_cmd_packaged(mis, errp); case MIG_CMD_POSTCOPY_ADVISE: ret = loadvm_postcopy_handle_advise(mis, len); -- 2.29.2