aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/migration/colo.h3
-rw-r--r--include/migration/misc.h2
-rw-r--r--include/migration/register.h3
-rw-r--r--include/migration/vmstate.h1
-rw-r--r--include/qemu/typedefs.h2
-rw-r--r--migration/block.c6
-rw-r--r--migration/colo-failover.c2
-rw-r--r--migration/colo.c2
-rw-r--r--migration/exec.c2
-rw-r--r--migration/fd.c2
-rw-r--r--migration/global_state.c1
-rw-r--r--migration/migration.c12
-rw-r--r--migration/migration.h2
-rw-r--r--migration/postcopy-ram.c2
-rw-r--r--migration/qemu-file.c2
-rw-r--r--migration/ram.c24
-rw-r--r--migration/savevm.c6
17 files changed, 30 insertions, 44 deletions
diff --git a/include/migration/colo.h b/include/migration/colo.h
index ba0bb6e6d5..be6beba301 100644
--- a/include/migration/colo.h
+++ b/include/migration/colo.h
@@ -14,9 +14,6 @@
#define QEMU_COLO_H
#include "qemu-common.h"
-#include "qemu/coroutine_int.h"
-#include "qemu/thread.h"
-#include "qemu/main-loop.h"
bool colo_supported(void);
void colo_info_init(void);
diff --git a/include/migration/misc.h b/include/migration/misc.h
index d5a433afdb..65c7070262 100644
--- a/include/migration/misc.h
+++ b/include/migration/misc.h
@@ -14,6 +14,8 @@
#ifndef MIGRATION_MISC_H
#define MIGRATION_MISC_H
+#include "qemu/notify.h"
+
/* migration/ram.c */
void ram_mig_init(void);
diff --git a/include/migration/register.h b/include/migration/register.h
index 717c6175b5..d9498d95eb 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -14,9 +14,6 @@
#ifndef MIGRATION_REGISTER_H
#define MIGRATION_REGISTER_H
-typedef void SaveStateHandler(QEMUFile *f, void *opaque);
-typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
-
typedef struct SaveVMHandlers {
/* This runs inside the iothread lock. */
SaveStateHandler *save_state;
diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h
index f3f3c2af4d..e85fbd81fc 100644
--- a/include/migration/vmstate.h
+++ b/include/migration/vmstate.h
@@ -29,7 +29,6 @@
#include "migration/qjson.h"
-typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
typedef struct VMStateInfo VMStateInfo;
typedef struct VMStateDescription VMStateDescription;
typedef struct VMStateField VMStateField;
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index 51958bf7d3..f745d5faf7 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -96,5 +96,7 @@ typedef struct uWireSlave uWireSlave;
typedef struct VirtIODevice VirtIODevice;
typedef struct Visitor Visitor;
typedef struct node_info NodeInfo;
+typedef void SaveStateHandler(QEMUFile *f, void *opaque);
+typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
#endif /* QEMU_TYPEDEFS_H */
diff --git a/migration/block.c b/migration/block.c
index ae06975199..3aae5a375e 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -15,19 +15,13 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "qemu-common.h"
-#include "block/block.h"
#include "qemu/error-report.h"
-#include "qemu/main-loop.h"
-#include "hw/hw.h"
#include "qemu/cutils.h"
#include "qemu/queue.h"
-#include "qemu/timer.h"
#include "block.h"
#include "migration/misc.h"
#include "migration.h"
#include "migration/register.h"
-#include "sysemu/blockdev.h"
#include "qemu-file.h"
#include "migration/vmstate.h"
#include "sysemu/block-backend.h"
diff --git a/migration/colo-failover.c b/migration/colo-failover.c
index cc229f5ab1..f9914869c5 100644
--- a/migration/colo-failover.c
+++ b/migration/colo-failover.c
@@ -13,6 +13,8 @@
#include "qemu/osdep.h"
#include "migration/colo.h"
#include "migration/failover.h"
+#include "qemu/main-loop.h"
+#include "migration.h"
#include "qmp-commands.h"
#include "qapi/qmp/qerror.h"
#include "qemu/error-report.h"
diff --git a/migration/colo.c b/migration/colo.c
index 45e9b46289..c436d63a19 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -11,7 +11,6 @@
*/
#include "qemu/osdep.h"
-#include "qemu/timer.h"
#include "sysemu/sysemu.h"
#include "qemu-file-channel.h"
#include "migration.h"
@@ -22,7 +21,6 @@
#include "io/channel-buffer.h"
#include "trace.h"
#include "qemu/error-report.h"
-#include "qapi/error.h"
#include "migration/failover.h"
#include "replication.h"
#include "qmp-commands.h"
diff --git a/migration/exec.c b/migration/exec.c
index b1de44543a..08b599e0e2 100644
--- a/migration/exec.c
+++ b/migration/exec.c
@@ -19,10 +19,8 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "qemu-common.h"
#include "channel.h"
#include "exec.h"
-#include "migration.h"
#include "io/channel-command.h"
#include "trace.h"
diff --git a/migration/fd.c b/migration/fd.c
index b2384bf133..30f5258a6a 100644
--- a/migration/fd.c
+++ b/migration/fd.c
@@ -16,10 +16,8 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
-#include "qemu-common.h"
#include "channel.h"
#include "fd.h"
-#include "migration.h"
#include "monitor/monitor.h"
#include "io/channel-util.h"
#include "trace.h"
diff --git a/migration/global_state.c b/migration/global_state.c
index 16ac63fb92..f792cf5242 100644
--- a/migration/global_state.c
+++ b/migration/global_state.c
@@ -17,7 +17,6 @@
#include "qapi/util.h"
#include "migration/global_state.h"
#include "migration/vmstate.h"
-#include "sysemu/sysemu.h"
#include "trace.h"
typedef struct {
diff --git a/migration/migration.c b/migration/migration.c
index 8ef6d6c412..b9d8798ed1 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -16,7 +16,6 @@
#include "qemu/osdep.h"
#include "qemu/cutils.h"
#include "qemu/error-report.h"
-#include "qemu/main-loop.h"
#include "migration/blocker.h"
#include "exec.h"
#include "fd.h"
@@ -30,11 +29,9 @@
#include "qemu-file-channel.h"
#include "qemu-file.h"
#include "migration/vmstate.h"
-#include "sysemu/sysemu.h"
#include "block/block.h"
#include "qapi/qmp/qerror.h"
#include "qapi/util.h"
-#include "qemu/sockets.h"
#include "qemu/rcu.h"
#include "block.h"
#include "postcopy-ram.h"
@@ -42,9 +39,6 @@
#include "qmp-commands.h"
#include "trace.h"
#include "qapi-event.h"
-#include "qom/cpu.h"
-#include "exec/memory.h"
-#include "exec/address-spaces.h"
#include "exec/target_page.h"
#include "io/channel-buffer.h"
#include "migration/colo.h"
@@ -1814,7 +1808,11 @@ static void *migration_thread(void *opaque)
qemu_savevm_state_header(s->to_dst_file);
- if (s->to_dst_file) {
+ /*
+ * If we opened the return path, we need to make sure dst has it
+ * opened as well.
+ */
+ if (s->rp_state.from_dst_file) {
/* Now tell the dest that it should open its end so it can reply */
qemu_savevm_send_open_return_path(s->to_dst_file);
diff --git a/migration/migration.h b/migration/migration.h
index 601e4ab354..d9a268a3af 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -14,10 +14,8 @@
#ifndef QEMU_MIGRATION_H
#define QEMU_MIGRATION_H
-#include "qapi/qmp/qdict.h"
#include "qemu-common.h"
#include "qemu/thread.h"
-#include "qemu/notify.h"
#include "qapi-types.h"
#include "exec/cpu-common.h"
#include "qemu/coroutine_int.h"
diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index c8c4500cc4..7e21e6fd36 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -17,8 +17,6 @@
*/
#include "qemu/osdep.h"
-
-#include "qemu-common.h"
#include "exec/target_page.h"
#include "migration.h"
#include "qemu-file.h"
diff --git a/migration/qemu-file.c b/migration/qemu-file.c
index e65c373341..2ab2bf362d 100644
--- a/migration/qemu-file.c
+++ b/migration/qemu-file.c
@@ -26,8 +26,6 @@
#include "qemu-common.h"
#include "qemu/error-report.h"
#include "qemu/iov.h"
-#include "qemu/sockets.h"
-#include "qemu/coroutine.h"
#include "migration.h"
#include "qemu-file.h"
#include "trace.h"
diff --git a/migration/ram.c b/migration/ram.c
index c1b4f4abf3..0baa1e0d56 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -26,14 +26,12 @@
* THE SOFTWARE.
*/
#include "qemu/osdep.h"
-#include "qemu-common.h"
#include "cpu.h"
#include <zlib.h>
#include "qapi-event.h"
#include "qemu/cutils.h"
#include "qemu/bitops.h"
#include "qemu/bitmap.h"
-#include "qemu/timer.h"
#include "qemu/main-loop.h"
#include "xbzrle.h"
#include "ram.h"
@@ -41,9 +39,7 @@
#include "migration/register.h"
#include "migration/misc.h"
#include "qemu-file.h"
-#include "migration/vmstate.h"
#include "postcopy-ram.h"
-#include "exec/address-spaces.h"
#include "migration/page_cache.h"
#include "qemu/error-report.h"
#include "trace.h"
@@ -2238,6 +2234,9 @@ void migrate_decompress_threads_create(void)
{
int i, thread_count;
+ if (!migrate_use_compression()) {
+ return;
+ }
thread_count = migrate_decompress_threads();
decompress_threads = g_new0(QemuThread, thread_count);
decomp_param = g_new0(DecompressParam, thread_count);
@@ -2259,6 +2258,9 @@ void migrate_decompress_threads_join(void)
{
int i, thread_count;
+ if (!migrate_use_compression()) {
+ return;
+ }
thread_count = migrate_decompress_threads();
for (i = 0; i < thread_count; i++) {
qemu_mutex_lock(&decomp_param[i].mutex);
@@ -2459,7 +2461,7 @@ static int ram_load_postcopy(QEMUFile *f)
static int ram_load(QEMUFile *f, void *opaque, int version_id)
{
- int flags = 0, ret = 0;
+ int flags = 0, ret = 0, invalid_flags = 0;
static uint64_t seq_iter;
int len = 0;
/*
@@ -2476,6 +2478,9 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
ret = -EINVAL;
}
+ if (!migrate_use_compression()) {
+ invalid_flags |= RAM_SAVE_FLAG_COMPRESS_PAGE;
+ }
/* This RCU critical section can be very long running.
* When RCU reclaims in the code start to become numerous,
* it will be necessary to reduce the granularity of this
@@ -2496,6 +2501,15 @@ static int ram_load(QEMUFile *f, void *opaque, int version_id)
flags = addr & ~TARGET_PAGE_MASK;
addr &= TARGET_PAGE_MASK;
+ if (flags & invalid_flags) {
+ if (flags & invalid_flags & RAM_SAVE_FLAG_COMPRESS_PAGE) {
+ error_report("Received an unexpected compressed page");
+ }
+
+ ret = -EINVAL;
+ break;
+ }
+
if (flags & (RAM_SAVE_FLAG_ZERO | RAM_SAVE_FLAG_PAGE |
RAM_SAVE_FLAG_COMPRESS_PAGE | RAM_SAVE_FLAG_XBZRLE)) {
RAMBlock *block = ram_block_from_stream(f, flags);
diff --git a/migration/savevm.c b/migration/savevm.c
index 30cda2cb46..f32a82de05 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -28,12 +28,8 @@
#include "qemu/osdep.h"
#include "hw/boards.h"
-#include "hw/hw.h"
-#include "hw/qdev.h"
#include "hw/xen/xen.h"
#include "net/net.h"
-#include "sysemu/sysemu.h"
-#include "qemu/timer.h"
#include "migration.h"
#include "migration/snapshot.h"
#include "migration/misc.h"
@@ -46,13 +42,11 @@
#include "postcopy-ram.h"
#include "qapi/qmp/qerror.h"
#include "qemu/error-report.h"
-#include "qemu/queue.h"
#include "sysemu/cpus.h"
#include "exec/memory.h"
#include "exec/target_page.h"
#include "qmp-commands.h"
#include "trace.h"
-#include "qemu/bitops.h"
#include "qemu/iov.h"
#include "block/snapshot.h"
#include "qemu/cutils.h"