We were retrying when there was one error, entering a loop.

Signed-off-by: Juan Quintela <quint...@redhat.com>
---
 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


Reply via email to