[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH COLO-Frame v10 03/38] COLO: migrate colo related
From: |
Dr. David Alan Gilbert |
Subject: |
Re: [Qemu-devel] [PATCH COLO-Frame v10 03/38] COLO: migrate colo related info to secondary node |
Date: |
Fri, 6 Nov 2015 16:36:47 +0000 |
User-agent: |
Mutt/1.5.24 (2015-08-30) |
* zhanghailiang (address@hidden) wrote:
> We can know if VM in destination should go into COLO mode by refer to
> the info that been migrated from PVM.
>
> We skip this section if colo is not enabled (i.e.
> migrate_set_capability colo off), so that, It not break compatibility with
> migration
> however the --enable-colo/disable-colo on the source/destination;
>
> Signed-off-by: zhanghailiang <address@hidden>
> Signed-off-by: Li Zhijian <address@hidden>
> Signed-off-by: Gonglei <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
> ---
> v10:
> - Use VMSTATE_BOOL instead of VMSTATE_UNIT32 for 'colo_requested' (Dave's
> suggestion).
> ---
> include/migration/colo.h | 2 ++
> migration/Makefile.objs | 1 +
> migration/colo-comm.c | 50
> ++++++++++++++++++++++++++++++++++++++++++++++++
> vl.c | 3 ++-
> 4 files changed, 55 insertions(+), 1 deletion(-)
> create mode 100644 migration/colo-comm.c
>
> diff --git a/include/migration/colo.h b/include/migration/colo.h
> index c60a590..9b6662d 100644
> --- a/include/migration/colo.h
> +++ b/include/migration/colo.h
> @@ -14,7 +14,9 @@
> #define QEMU_COLO_H
>
> #include "qemu-common.h"
> +#include "migration/migration.h"
>
> bool colo_supported(void);
> +void colo_info_mig_init(void);
>
> #endif
> diff --git a/migration/Makefile.objs b/migration/Makefile.objs
> index 5a25d39..cb7bd30 100644
> --- a/migration/Makefile.objs
> +++ b/migration/Makefile.objs
> @@ -1,5 +1,6 @@
> common-obj-y += migration.o tcp.o
> common-obj-$(CONFIG_COLO) += colo.o
> +common-obj-y += colo-comm.o
> common-obj-y += vmstate.o
> common-obj-y += qemu-file.o qemu-file-buf.o qemu-file-unix.o
> qemu-file-stdio.o
> common-obj-y += xbzrle.o
> diff --git a/migration/colo-comm.c b/migration/colo-comm.c
> new file mode 100644
> index 0000000..fb407e0
> --- /dev/null
> +++ b/migration/colo-comm.c
> @@ -0,0 +1,50 @@
> +/*
> + * COarse-grain LOck-stepping Virtual Machines for Non-stop Service (COLO)
> + * (a.k.a. Fault Tolerance or Continuous Replication)
> + *
> + * Copyright (c) 2015 HUAWEI TECHNOLOGIES CO., LTD.
> + * Copyright (c) 2015 FUJITSU LIMITED
> + * Copyright (c) 2015 Intel Corporation
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or
> + * later. See the COPYING file in the top-level directory.
> + *
> + */
> +
> +#include <migration/colo.h>
> +#include "trace.h"
> +
> +typedef struct {
> + bool colo_requested;
> +} COLOInfo;
> +
> +static COLOInfo colo_info;
> +
> +static void colo_info_pre_save(void *opaque)
> +{
> + COLOInfo *s = opaque;
> +
> + s->colo_requested = migrate_colo_enabled();
> +}
> +
> +static bool colo_info_need(void *opaque)
> +{
> + return migrate_colo_enabled();
> +}
> +
> +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_BOOL(colo_requested, COLOInfo),
> + VMSTATE_END_OF_LIST()
> + },
> +};
> +
> +void colo_info_mig_init(void)
> +{
> + vmstate_register(NULL, 0, &colo_state, &colo_info);
> +}
> diff --git a/vl.c b/vl.c
> index f5f7c3f..10e6cbe 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -91,6 +91,7 @@ int main(int argc, char **argv)
> #include "sysemu/dma.h"
> #include "audio/audio.h"
> #include "migration/migration.h"
> +#include "migration/colo.h"
> #include "sysemu/kvm.h"
> #include "qapi/qmp/qjson.h"
> #include "qemu/option.h"
> @@ -4421,7 +4422,7 @@ int main(int argc, char **argv, char **envp)
>
> blk_mig_init();
> ram_mig_init();
> -
> + colo_info_mig_init();
> /* If the currently selected machine wishes to override the units-per-bus
> * property of its default HBA interface type, do so now. */
> if (machine_class->units_per_default_bus) {
> --
> 1.8.3.1
>
>
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK
- Re: [Qemu-devel] [PATCH COLO-Frame v10 15/38] ram/COLO: Record pages received from PVM by re-using migration dirty bitmap, (continued)
- [Qemu-devel] [PATCH COLO-Frame v10 28/38] COLO: Update the global runstate after going into colo state, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 25/38] COLO failover: Don't do failover during loading VM's state, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 22/38] COLO: implement default failover treatment, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 02/38] migration: Introduce capability 'x-colo' to migration, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 23/38] qmp event: Add event notification for COLO error, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 03/38] COLO: migrate colo related info to secondary node, zhanghailiang, 2015/11/03
- Re: [Qemu-devel] [PATCH COLO-Frame v10 03/38] COLO: migrate colo related info to secondary node,
Dr. David Alan Gilbert <=
- [Qemu-devel] [PATCH COLO-Frame v10 30/38] COLO: Separate the process of saving/loading ram and device state, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 27/38] COLO: Process shutdown command for VM in COLO state, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 38/38] COLO: Add block replication into colo process, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 34/38] filter-buffer: Accept zero interval, zhanghailiang, 2015/11/03
- [Qemu-devel] [PATCH COLO-Frame v10 05/38] migration: Integrate COLO checkpoint process into migration, zhanghailiang, 2015/11/03