On 18/04/2017 11:44, Paolo Bonzini wrote: > > > On 17/04/2017 22:00, Juan Quintela wrote: >> load_vmstate() already use error_report, so be consistent. > > Better: make both return Error* via an Error** parameter, and add > > hmp_handle_error(mon, &err); > > to hmp_savevm and error_report_err(err) on the loading side.
Not really, loadvm is also a monitor command (I was confusing it with -incoming). So it can use hmp_handle_error too. Paolo > Paolo > >> Signed-off-by: Juan Quintela <quint...@redhat.com> >> --- >> include/sysemu/sysemu.h | 2 +- >> migration/savevm.c | 16 ++++++++-------- >> monitor.c | 2 +- >> replay/replay-snapshot.c | 2 +- >> 4 files changed, 11 insertions(+), 11 deletions(-) >> >> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h >> index 146a0dc..d2582fa 100644 >> --- a/include/sysemu/sysemu.h >> +++ b/include/sysemu/sysemu.h >> @@ -75,7 +75,7 @@ void qemu_remove_exit_notifier(Notifier *notify); >> void qemu_add_machine_init_done_notifier(Notifier *notify); >> void qemu_remove_machine_init_done_notifier(Notifier *notify); >> >> -int save_vmstate(Monitor *mon, const char *name); >> +int save_vmstate(const char *name); >> int load_vmstate(const char *name); >> void hmp_delvm(Monitor *mon, const QDict *qdict); >> void hmp_info_snapshots(Monitor *mon, const QDict *qdict); >> diff --git a/migration/savevm.c b/migration/savevm.c >> index cbd7e0d..36a6002 100644 >> --- a/migration/savevm.c >> +++ b/migration/savevm.c >> @@ -2055,7 +2055,7 @@ int qemu_loadvm_state(QEMUFile *f) >> return ret; >> } >> >> -int save_vmstate(Monitor *mon, const char *name) >> +int save_vmstate(const char *name) >> { >> BlockDriverState *bs, *bs1; >> QEMUSnapshotInfo sn1, *sn = &sn1, old_sn1, *old_sn = &old_sn1; >> @@ -2069,8 +2069,8 @@ int save_vmstate(Monitor *mon, const char *name) >> AioContext *aio_context; >> >> if (!bdrv_all_can_snapshot(&bs)) { >> - monitor_printf(mon, "Device '%s' is writable but does not " >> - "support snapshots.\n", bdrv_get_device_name(bs)); >> + error_report("Device '%s' is writable but does not support >> snapshots.", >> + bdrv_get_device_name(bs)); >> return ret; >> } >> >> @@ -2087,7 +2087,7 @@ int save_vmstate(Monitor *mon, const char *name) >> >> bs = bdrv_all_find_vmstate_bs(); >> if (bs == NULL) { >> - monitor_printf(mon, "No block device can accept snapshots\n"); >> + error_report("No block device can accept snapshots"); >> return ret; >> } >> aio_context = bdrv_get_aio_context(bs); >> @@ -2096,7 +2096,7 @@ int save_vmstate(Monitor *mon, const char *name) >> >> ret = global_state_store(); >> if (ret) { >> - monitor_printf(mon, "Error saving global state\n"); >> + error_report("Error saving global state"); >> return ret; >> } >> vm_stop(RUN_STATE_SAVE_VM); >> @@ -2128,7 +2128,7 @@ int save_vmstate(Monitor *mon, const char *name) >> /* save the VM state */ >> f = qemu_fopen_bdrv(bs, 1); >> if (!f) { >> - monitor_printf(mon, "Could not open VM state file\n"); >> + error_report("Could not open VM state file"); >> goto the_end; >> } >> ret = qemu_savevm_state(f, &local_err); >> @@ -2141,8 +2141,8 @@ int save_vmstate(Monitor *mon, const char *name) >> >> ret = bdrv_all_create_snapshot(sn, bs, vm_state_size, &bs); >> if (ret < 0) { >> - monitor_printf(mon, "Error while creating snapshot on '%s'\n", >> - bdrv_get_device_name(bs)); >> + error_report("Error while creating snapshot on '%s'", >> + bdrv_get_device_name(bs)); >> goto the_end; >> } >> >> diff --git a/monitor.c b/monitor.c >> index 2fca4fb..9e79a97 100644 >> --- a/monitor.c >> +++ b/monitor.c >> @@ -1856,7 +1856,7 @@ static void hmp_loadvm(Monitor *mon, const QDict >> *qdict) >> >> static void hmp_savevm(Monitor *mon, const QDict *qdict) >> { >> - save_vmstate(mon, qdict_get_try_str(qdict, "name")); >> + save_vmstate(qdict_get_try_str(qdict, "name")); >> } >> >> int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp) >> diff --git a/replay/replay-snapshot.c b/replay/replay-snapshot.c >> index 65e2d37..8cced46 100644 >> --- a/replay/replay-snapshot.c >> +++ b/replay/replay-snapshot.c >> @@ -64,7 +64,7 @@ void replay_vmstate_init(void) >> { >> if (replay_snapshot) { >> if (replay_mode == REPLAY_MODE_RECORD) { >> - if (save_vmstate(cur_mon, replay_snapshot) != 0) { >> + if (save_vmstate(replay_snapshot) != 0) { >> error_report("Could not create snapshot for icount record"); >> exit(1); >> } >> >