From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
To: zhanghailiang <zhang.zhanghailiang@huawei.com>
Cc: lizhijian@cn.fujitsu.com, quintela@redhat.com,
yunhong.jiang@intel.com, eddie.dong@intel.com,
peter.huangpeng@huawei.com, qemu-devel@nongnu.org,
arei.gonglei@huawei.com, amit.shah@redhat.com
Subject: Re: [Qemu-devel] [PATCH COLO-Frame v7 04/34] colo-comm/migration: skip colo info section for special cases
Date: Fri, 17 Jul 2015 18:07:57 +0100 [thread overview]
Message-ID: <20150717170757.GM2273@work-vm> (raw)
In-Reply-To: <1436411802-181876-5-git-send-email-zhang.zhanghailiang@huawei.com>
* zhanghailiang (zhang.zhanghailiang@huawei.com) wrote:
> 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 <zhang.zhanghailiang@huawei.com>
> ---
> 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;
> +}
That will work, but I think (untested) this can just be:
+static bool colo_info_need(void *opaque)
+{
+ return migrate_enable_colo();
+}
and then you can get rid of the skip stuff (and merge it
back to the previous patch).
Old qemu's will never sent the section so we're safe.
New qemu's with that flag unset won't send the section, so
they're still migration compatible on the machine type.
New qemu's with the flag set will use it.
Dave
>
> 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
>
>
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
next prev parent reply other threads:[~2015-07-17 17:08 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-09 3:16 [Qemu-devel] [PATCH COLO-Frame v7 00/34] COarse-grain LOck-stepping(COLO) Virtual Machines for Non-stop Service (FT) zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 01/34] configure: Add parameter for configure to enable/disable COLO support zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 02/34] migration: Introduce capability 'colo' to migration zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 03/34] COLO: migrate colo related info to slave zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 04/34] colo-comm/migration: skip colo info section for special cases zhanghailiang
2015-07-17 17:07 ` Dr. David Alan Gilbert [this message]
2015-07-20 8:42 ` zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 05/34] migration: Integrate COLO checkpoint process into migration zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 06/34] migration: Integrate COLO checkpoint process into loadvm zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 07/34] COLO: Implement colo checkpoint protocol zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 08/34] COLO: Add a new RunState RUN_STATE_COLO zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 09/34] QEMUSizedBuffer: Introduce two help functions for qsb zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 10/34] COLO: Save VM state to slave when do checkpoint zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 11/34] COLO RAM: Load PVM's dirty page into SVM's RAM cache temporarily zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 12/34] COLO VMstate: Load VM state into qsb before restore it zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 13/34] arch_init: Start to trace dirty pages of SVM zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 14/34] COLO RAM: Flush cached RAM into SVM's memory zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 15/34] COLO failover: Introduce a new command to trigger a failover zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 16/34] COLO failover: Introduce state to record failover process zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 17/34] COLO failover: Implement COLO primary/secondary vm failover work zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 18/34] qmp event: Add event notification for COLO error zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 19/34] COLO failover: Don't do failover during loading VM's state zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 20/34] COLO: Add new command parameter 'forward_nic' 'colo_script' for net zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 21/34] COLO NIC: Init/remove colo nic devices when add/cleanup tap devices zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 22/34] tap: Make launch_script() public zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 23/34] COLO NIC: Implement colo nic device interface configure() zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 24/34] colo-nic: Handle secondary VM's original net device configure zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 25/34] COLO NIC: Implement colo nic init/destroy function zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 26/34] COLO NIC: Some init work related with proxy module zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 27/34] COLO: Handle nfnetlink message from " zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 28/34] COLO: Do checkpoint according to the result of packets comparation zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 29/34] COLO: Improve checkpoint efficiency by do additional periodic checkpoint zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 30/34] COLO: Add colo-set-checkpoint-period command zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 31/34] COLO NIC: Implement NIC checkpoint and failover zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 32/34] COLO: Disable qdev hotplug when VM is in COLO mode zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 33/34] COLO: Implement shutdown checkpoint zhanghailiang
2015-07-09 3:16 ` [Qemu-devel] [PATCH COLO-Frame v7 34/34] COLO: Add block replication into colo process zhanghailiang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150717170757.GM2273@work-vm \
--to=dgilbert@redhat.com \
--cc=amit.shah@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=eddie.dong@intel.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=peter.huangpeng@huawei.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=yunhong.jiang@intel.com \
--cc=zhang.zhanghailiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).