summary refs log tree commit diff stats
path: root/migration-tcp.c
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-06 15:30:22 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-06 15:30:22 +0000
commit825a4929dac5d991c384bd9ee18c693458f7f055 (patch)
tree0025fe98e76dcc283aafa2471da82ca251706a89 /migration-tcp.c
parent978d5d73edeea8d5c725c43b7bd23fd897cac7fa (diff)
downloadfocaccia-qemu-825a4929dac5d991c384bd9ee18c693458f7f055.tar.gz
focaccia-qemu-825a4929dac5d991c384bd9ee18c693458f7f055.zip
Make sure to resume the monitor only after flushing out outstanding
network traffic.

This was bug was reported by Chris Lalancette.

Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>



git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5640 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'migration-tcp.c')
-rw-r--r--migration-tcp.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/migration-tcp.c b/migration-tcp.c
index 698cd05d97..f13dc0da7d 100644
--- a/migration-tcp.c
+++ b/migration-tcp.c
@@ -40,19 +40,11 @@ typedef struct FdMigrationState
     do { } while (0)
 #endif
 
-int debug_me = 0;
-
 static void tcp_cleanup(FdMigrationState *s)
 {
-    if (s->detach == 2) {
-        monitor_resume();
-        s->detach = 0;
-    }
-
     qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
 
     if (s->file) {
-        debug_me = 1;
         dprintf("closing file\n");
         qemu_fclose(s->file);
     }
@@ -60,6 +52,12 @@ static void tcp_cleanup(FdMigrationState *s)
     if (s->fd != -1)
         close(s->fd);
 
+    /* Don't resume monitor until we've flushed all of the buffers */
+    if (s->detach == 2) {
+        monitor_resume();
+        s->detach = 0;
+    }
+
     s->fd = -1;
 }