summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Maydell2018-03-30 20:58:17 +0200
committerPeter Maydell2018-03-30 20:58:17 +0200
commit4cd327ded7337c418da114c184cf5868fd980ab4 (patch)
tree6f6dbaf375f303d0bf337dcc0c519006d41e1bf5
parentMerge remote-tracking branch 'remotes/riscv/tags/riscv-qemu-2.12-important-fi... (diff)
parentmigration: Don't activate block devices if using -S (diff)
downloadqemu-4cd327ded7337c418da114c184cf5868fd980ab4.tar.gz
qemu-4cd327ded7337c418da114c184cf5868fd980ab4.tar.xz
qemu-4cd327ded7337c418da114c184cf5868fd980ab4.zip
Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20180329a' into staging
Migration pull (small fixes) A pair of two small fixes for 2.12. # gpg: Signature made Thu 29 Mar 2018 14:55:17 BST # gpg: using RSA key 0516331EBC5BFDE7 # gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" # Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A 9FA9 0516 331E BC5B FDE7 * remotes/dgilbert/tags/pull-migration-20180329a: migration: Don't activate block devices if using -S migration: fix pfd leak Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--migration/migration.c22
-rw-r--r--migration/postcopy-ram.c1
2 files changed, 16 insertions, 7 deletions
diff --git a/migration/migration.c b/migration/migration.c
index 52a5092add..58bd382730 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -306,13 +306,21 @@ static void process_incoming_migration_bh(void *opaque)
Error *local_err = NULL;
MigrationIncomingState *mis = opaque;
- /* Make sure all file formats flush their mutable metadata.
- * If we get an error here, just don't restart the VM yet. */
- bdrv_invalidate_cache_all(&local_err);
- if (local_err) {
- error_report_err(local_err);
- local_err = NULL;
- autostart = false;
+ /* Only fire up the block code now if we're going to restart the
+ * VM, else 'cont' will do it.
+ * This causes file locking to happen; so we don't want it to happen
+ * unless we really are starting the VM.
+ */
+ if (autostart && (!global_state_received() ||
+ global_state_get_runstate() == RUN_STATE_RUNNING)) {
+ /* Make sure all file formats flush their mutable metadata.
+ * If we get an error here, just don't restart the VM yet. */
+ bdrv_invalidate_cache_all(&local_err);
+ if (local_err) {
+ error_report_err(local_err);
+ local_err = NULL;
+ autostart = false;
+ }
}
/*
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index efd77939af..4a0b33b373 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -754,6 +754,7 @@ static void *postcopy_ram_fault_thread(void *opaque)
}
}
trace_postcopy_ram_fault_thread_exit();
+ g_free(pfd);
return NULL;
}