@@ -74,7 +74,8 @@ void qemu_announce_self(void);
bool qemu_savevm_state_blocked(Error **errp);
int qemu_savevm_state_begin(QEMUFile *f,
- const MigrationParams *params);
+ const MigrationParams *params,
+ Error **errp);
int qemu_savevm_state_iterate(QEMUFile *f);
int qemu_savevm_state_complete(QEMUFile *f);
void qemu_savevm_state_cancel(QEMUFile *f);
@@ -678,7 +678,7 @@ static bool migrate_fd_put_ready(MigrationState *s, uint64_t max_size)
if (s->first_time) {
s->first_time = false;
DPRINTF("beginning savevm\n");
- ret = qemu_savevm_state_begin(s->file, &s->params);
+ ret = qemu_savevm_state_begin(s->file, &s->params, NULL);
if (ret < 0) {
DPRINTF("failed, %d\n", ret);
migrate_fd_error(s);
@@ -1557,7 +1557,8 @@ bool qemu_savevm_state_blocked(Error **errp)
}
int qemu_savevm_state_begin(QEMUFile *f,
- const MigrationParams *params)
+ const MigrationParams *params,
+ Error **errp)
{
SaveStateEntry *se;
int ret;
@@ -1598,11 +1599,13 @@ int qemu_savevm_state_begin(QEMUFile *f,
ret = se->ops->save_live_setup(f, se->opaque);
if (ret < 0) {
qemu_savevm_state_cancel(f);
+ error_setg(errp, "Failed to begin vmstate save.");
return ret;
}
}
ret = qemu_file_get_error(f);
if (ret != 0) {
+ error_setg_errno(errp, errno, "Failed to begin vmstate save.");
qemu_savevm_state_cancel(f);
}
@@ -1758,7 +1761,7 @@ static int qemu_savevm_state(QEMUFile *f)
goto out;
}
- ret = qemu_savevm_state_begin(f, ¶ms);
+ ret = qemu_savevm_state_begin(f, ¶ms, NULL);
if (ret < 0)
goto out;
Signed-off-by: Pavel Hrdina <phrdina@redhat.com> --- include/sysemu/sysemu.h | 3 ++- migration.c | 2 +- savevm.c | 7 +++++-- 3 files changed, 8 insertions(+), 4 deletions(-)