mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
migration: push Error **errp into loadvm_handle_cmd_packaged()
This is an incremental step in converting vmstate loading code to report error via Error objects instead of directly printing it to console/monitor. It is ensured that loadvm_handle_cmd_packaged() must report an error in errp, in case of failure. Reviewed-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Signed-off-by: Arun Menon <armenon@redhat.com> Tested-by: Fabiano Rosas <farosas@suse.de> Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp> Link: https://lore.kernel.org/r/20250918-propagate_tpm_error-v14-6-36f11a6fb9d3@redhat.com Signed-off-by: Peter Xu <peterx@redhat.com>
This commit is contained in:
+8
-9
@@ -2405,7 +2405,7 @@ static int loadvm_postcopy_handle_resume(MigrationIncomingState *mis)
|
||||
* Returns: Negative values on error
|
||||
*
|
||||
*/
|
||||
static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis)
|
||||
static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis, Error **errp)
|
||||
{
|
||||
int ret;
|
||||
size_t length;
|
||||
@@ -2415,7 +2415,7 @@ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis)
|
||||
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", length);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -2426,8 +2426,8 @@ 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);
|
||||
error_setg(errp, "CMD_PACKAGED: Buffer receive fail ret=%d length=%zu",
|
||||
ret, length);
|
||||
return (ret < 0) ? ret : -EAGAIN;
|
||||
}
|
||||
bioc->usage += length;
|
||||
@@ -2457,6 +2457,9 @@ static int loadvm_handle_cmd_packaged(MigrationIncomingState *mis)
|
||||
} while (1);
|
||||
|
||||
ret = qemu_loadvm_state_main(packf, mis);
|
||||
if (ret < 0) {
|
||||
error_setg(errp, "VM state load failed: %d", ret);
|
||||
}
|
||||
trace_loadvm_handle_cmd_packaged_main(ret);
|
||||
qemu_fclose(packf);
|
||||
object_unref(OBJECT(bioc));
|
||||
@@ -2620,11 +2623,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 ret;
|
||||
return loadvm_handle_cmd_packaged(mis, errp);
|
||||
|
||||
case MIG_CMD_POSTCOPY_ADVISE:
|
||||
ret = loadvm_postcopy_handle_advise(mis, len);
|
||||
|
||||
Reference in New Issue
Block a user