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 | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index 3b46fbba32..95e228a646 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1369,7 +1369,8 @@ int qemu_savevm_state_complete_precopy_iterable(QEMUFile *f, bool in_postcopy, static int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, bool in_postcopy, - bool inactivate_disks) + bool inactivate_disks, + Error **errp) { g_autoptr(JSONWriter) vmdesc = NULL; int vmdesc_len; @@ -1398,9 +1399,11 @@ int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, save_section_header(f, se, QEMU_VM_SECTION_FULL); ret = vmstate_save(f, se, vmdesc); - if (ret) { + if (ret < 0) { + error_setg_errno(errp, -ret, + "failed to save device state '%s'", se->idstr); qemu_file_set_error(f, ret); - return ret; + return -1; } trace_savevm_section_end(se->idstr, se->section_id, 0); save_section_footer(f, se); @@ -1413,10 +1416,10 @@ int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, * bdrv_invalidate_cache_all() on the other end won't fail. */ ret = bdrv_inactivate_all(); if (ret) { - error_report("%s: bdrv_inactivate_all() failed (%d)", - __func__, ret); + error_setg_errno(errp, -ret, + "failed to deactivate disks when completing precopy save"); qemu_file_set_error(f, ret); - return ret; + return -1; } } if (!in_postcopy) { @@ -1440,7 +1443,6 @@ int qemu_savevm_state_complete_precopy_non_iterable(QEMUFile *f, int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only, bool inactivate_disks) { - int ret; Error *local_err = NULL; bool in_postcopy = migration_in_postcopy(); @@ -1464,10 +1466,11 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only, goto flush; } - ret = qemu_savevm_state_complete_precopy_non_iterable(f, in_postcopy, - inactivate_disks); - if (ret) { - return ret; + if (qemu_savevm_state_complete_precopy_non_iterable(f, in_postcopy, + inactivate_disks, + &local_err) < 0) { + error_report_err(local_err); + return -1; } flush: -- 2.29.2