We were retrying when there was one error, entering a loop.
Signed-off-by: Juan Quintela <[email protected]>
---
migration.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/migration.c b/migration.c
index a02100b..6082c32 100644
--- a/migration.c
+++ b/migration.c
@@ -269,6 +269,7 @@ static ssize_t migrate_fd_put_buffer(void *opaque, const
void *data,
static void migrate_fd_put_ready(void *opaque)
{
MigrationState *s = opaque;
+ int ret;
if (s->state != MIG_STATE_ACTIVE) {
DPRINTF("put_ready returning because of non-active state\n");
@@ -276,7 +277,10 @@ static void migrate_fd_put_ready(void *opaque)
}
DPRINTF("iterate\n");
- if (qemu_savevm_state_iterate(s->mon, s->file) == 1) {
+ ret = qemu_savevm_state_iterate(s->mon, s->file);
+ if (ret == -1) {
+ migrate_fd_error(s);
+ } else if (ret == 1) {
int old_vm_running = vm_running;
DPRINTF("done iterating\n");
--
1.7.4