Commit 825a4929dac5d991c384bd9ee18c693458f7f055
1 parent
978d5d73
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
Showing
1 changed file
with
6 additions
and
8 deletions
migration-tcp.c
| @@ -40,19 +40,11 @@ typedef struct FdMigrationState | @@ -40,19 +40,11 @@ typedef struct FdMigrationState | ||
| 40 | do { } while (0) | 40 | do { } while (0) |
| 41 | #endif | 41 | #endif |
| 42 | 42 | ||
| 43 | -int debug_me = 0; | ||
| 44 | - | ||
| 45 | static void tcp_cleanup(FdMigrationState *s) | 43 | static void tcp_cleanup(FdMigrationState *s) |
| 46 | { | 44 | { |
| 47 | - if (s->detach == 2) { | ||
| 48 | - monitor_resume(); | ||
| 49 | - s->detach = 0; | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL); | 45 | qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL); |
| 53 | 46 | ||
| 54 | if (s->file) { | 47 | if (s->file) { |
| 55 | - debug_me = 1; | ||
| 56 | dprintf("closing file\n"); | 48 | dprintf("closing file\n"); |
| 57 | qemu_fclose(s->file); | 49 | qemu_fclose(s->file); |
| 58 | } | 50 | } |
| @@ -60,6 +52,12 @@ static void tcp_cleanup(FdMigrationState *s) | @@ -60,6 +52,12 @@ static void tcp_cleanup(FdMigrationState *s) | ||
| 60 | if (s->fd != -1) | 52 | if (s->fd != -1) |
| 61 | close(s->fd); | 53 | close(s->fd); |
| 62 | 54 | ||
| 55 | + /* Don't resume monitor until we've flushed all of the buffers */ | ||
| 56 | + if (s->detach == 2) { | ||
| 57 | + monitor_resume(); | ||
| 58 | + s->detach = 0; | ||
| 59 | + } | ||
| 60 | + | ||
| 63 | s->fd = -1; | 61 | s->fd = -1; |
| 64 | } | 62 | } |
| 65 | 63 |