[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH COLO-Frame v7 04/34] colo-comm/migration: skip colo
From: |
zhanghailiang |
Subject: |
[Qemu-devel] [PATCH COLO-Frame v7 04/34] colo-comm/migration: skip colo info section for special cases |
Date: |
Thu, 9 Jul 2015 11:16:12 +0800 |
For older machine types, we skip the colo info section when do
migration, in this way, we can migrate successfully between older mainchine and
the new one.
We also skip this section if colo is not enabled (i.e.
migrate_set_capability colo on), so that, It not break compatibility with
migration
however the --enable-colo/disable-colo on the source/destination;
Signed-off-by: zhanghailiang <address@hidden>
---
hw/i386/pc_piix.c | 1 +
hw/i386/pc_q35.c | 1 +
hw/ppc/spapr.c | 1 +
include/migration/migration.h | 1 +
migration/colo-comm.c | 13 +++++++++++++
5 files changed, 17 insertions(+)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 8167b12..926b0d8 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -313,6 +313,7 @@ static void pc_compat_2_3(MachineState *machine)
}
global_state_set_optional();
savevm_skip_configuration();
+ savevm_skip_colo_state();
}
static void pc_compat_2_2(MachineState *machine)
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 974aead..b5c6c85 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -296,6 +296,7 @@ static void pc_compat_2_3(MachineState *machine)
}
global_state_set_optional();
savevm_skip_configuration();
+ savevm_skip_colo_state();
}
static void pc_compat_2_2(MachineState *machine)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index a6f1947..568de93 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1880,6 +1880,7 @@ static void spapr_compat_2_3(Object *obj)
{
savevm_skip_section_footers();
global_state_set_optional();
+ savevm_skip_colo_state();
}
static void spapr_compat_2_2(Object *obj)
diff --git a/include/migration/migration.h b/include/migration/migration.h
index 5c797d4..1b23517 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -203,4 +203,5 @@ void savevm_skip_section_footers(void);
void register_global_state(void);
void global_state_set_optional(void);
void savevm_skip_configuration(void);
+void savevm_skip_colo_state(void);
#endif
diff --git a/migration/colo-comm.c b/migration/colo-comm.c
index 0a93672..3c8e361 100644
--- a/migration/colo-comm.c
+++ b/migration/colo-comm.c
@@ -21,6 +21,11 @@ typedef struct {
static COLOInfo colo_info;
+void savevm_skip_colo_state(void)
+{
+ colo_info.skip = true;
+}
+
static void colo_info_pre_save(void *opaque)
{
COLOInfo *s = opaque;
@@ -32,12 +37,20 @@ static void colo_info_pre_save(void *opaque)
}
}
+static bool colo_info_need(void *opaque)
+{
+ if (migrate_enable_colo() && !colo_info.skip) {
+ return true;
+ }
+ return false;
+}
static const VMStateDescription colo_state = {
.name = "COLOState",
.version_id = 1,
.minimum_version_id = 1,
.pre_save = colo_info_pre_save,
+ .needed = colo_info_need,
.fields = (VMStateField[]) {
VMSTATE_UINT32(colo_requested, COLOInfo),
VMSTATE_END_OF_LIST()
--
1.7.12.4
- [Qemu-devel] [PATCH COLO-Frame v7 12/34] COLO VMstate: Load VM state into qsb before restore it, (continued)
- [Qemu-devel] [PATCH COLO-Frame v7 12/34] COLO VMstate: Load VM state into qsb before restore it, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 32/34] COLO: Disable qdev hotplug when VM is in COLO mode, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 30/34] COLO: Add colo-set-checkpoint-period command, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 24/34] colo-nic: Handle secondary VM's original net device configure, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 11/34] COLO RAM: Load PVM's dirty page into SVM's RAM cache temporarily, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 34/34] COLO: Add block replication into colo process, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 31/34] COLO NIC: Implement NIC checkpoint and failover, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 33/34] COLO: Implement shutdown checkpoint, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 13/34] arch_init: Start to trace dirty pages of SVM, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 01/34] configure: Add parameter for configure to enable/disable COLO support, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 04/34] colo-comm/migration: skip colo info section for special cases,
zhanghailiang <=
- [Qemu-devel] [PATCH COLO-Frame v7 03/34] COLO: migrate colo related info to slave, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 19/34] COLO failover: Don't do failover during loading VM's state, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 23/34] COLO NIC: Implement colo nic device interface configure(), zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 18/34] qmp event: Add event notification for COLO error, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 20/34] COLO: Add new command parameter 'forward_nic' 'colo_script' for net, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 17/34] COLO failover: Implement COLO primary/secondary vm failover work, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 21/34] COLO NIC: Init/remove colo nic devices when add/cleanup tap devices, zhanghailiang, 2015/07/08
- [Qemu-devel] [PATCH COLO-Frame v7 28/34] COLO: Do checkpoint according to the result of packets comparation, zhanghailiang, 2015/07/08