summaryrefslogtreecommitdiffstats
path: root/migration.c
diff options
context:
space:
mode:
Diffstat (limited to 'migration.c')
-rw-r--r--migration.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/migration.c b/migration.c
index 706fe55..fbf2339 100644
--- a/migration.c
+++ b/migration.c
@@ -252,13 +252,17 @@ void migrate_fd_error(FdMigrationState *s)
migrate_fd_cleanup(s);
}
-void migrate_fd_cleanup(FdMigrationState *s)
+int migrate_fd_cleanup(FdMigrationState *s)
{
+ int ret = 0;
+
qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
if (s->file) {
DPRINTF("closing file\n");
- qemu_fclose(s->file);
+ if (qemu_fclose(s->file) != 0) {
+ ret = -1;
+ }
s->file = NULL;
}
@@ -271,6 +275,8 @@ void migrate_fd_cleanup(FdMigrationState *s)
}
s->fd = -1;
+
+ return ret;
}
void migrate_fd_put_notify(void *opaque)
@@ -349,7 +355,12 @@ void migrate_fd_put_ready(void *opaque)
} else {
state = MIG_STATE_COMPLETED;
}
- migrate_fd_cleanup(s);
+ if (migrate_fd_cleanup(s) < 0) {
+ if (old_vm_running) {
+ vm_start();
+ }
+ state = MIG_STATE_ERROR;
+ }
s->state = state;
}
}
OpenPOWER on IntegriCloud