qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]