migration: shut src return path unconditionally
authorPeter Xu <peterx@redhat.com>
Fri, 19 May 2017 06:43:30 +0000 (14:43 +0800)
committerJuan Quintela <quintela@redhat.com>
Thu, 1 Jun 2017 16:49:12 +0000 (18:49 +0200)
We were do the shutting off only for postcopy. Now we do this as long as
the source return path is there.

Moving the cleanup of from_src_file there too.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
migration/migration.c
migration/postcopy-ram.c

index b90e39992e61802a0af7d9c88581e373a0c46afe..5d9ccf1988f8512982a3efb056c7797e30159e8b 100644 (file)
@@ -134,10 +134,17 @@ void migration_incoming_state_destroy(void)
     struct MigrationIncomingState *mis = migration_incoming_get_current();
 
     if (mis->to_src_file) {
+        /* Tell source that we are done */
+        migrate_send_rp_shut(mis, qemu_file_get_error(mis->from_src_file) != 0);
         qemu_fclose(mis->to_src_file);
         mis->to_src_file = NULL;
     }
 
+    if (mis->from_src_file) {
+        qemu_fclose(mis->from_src_file);
+        mis->from_src_file = NULL;
+    }
+
     qemu_event_destroy(&mis->main_thread_load_event);
 }
 
@@ -435,7 +442,6 @@ static void process_incoming_migration_co(void *opaque)
         exit(EXIT_FAILURE);
     }
 
-    qemu_fclose(f);
     free_xbzrle_decoded_buf();
 
     mis->bh = qemu_bh_new(process_incoming_migration_bh, mis);
index 3f9ae1bff25bd3c2399b4aa6d304ad3d2b02b7b0..5ceb62374b36c0d3b382306700e0fd5e8c00aec2 100644 (file)
@@ -333,7 +333,6 @@ int postcopy_ram_incoming_cleanup(MigrationIncomingState *mis)
     }
 
     postcopy_state_set(POSTCOPY_INCOMING_END);
-    migrate_send_rp_shut(mis, qemu_file_get_error(mis->from_src_file) != 0);
 
     if (mis->postcopy_tmp_page) {
         munmap(mis->postcopy_tmp_page, mis->largest_page_size);