All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Yang Hongyang <yanghy@cn.fujitsu.com>, xen-devel@lists.xen.org
Cc: wei.liu2@citrix.com, ian.campbell@citrix.com,
	wency@cn.fujitsu.com, ian.jackson@eu.citrix.com,
	yunhong.jiang@intel.com, eddie.dong@intel.com,
	guijianfeng@cn.fujitsu.com, rshriram@cs.ubc.ca
Subject: Re: [PATCH v4 --for 4.6 COLOPre 20/25] tools/libx{l, c}: add back channel to libxc
Date: Wed, 15 Jul 2015 14:21:51 +0100	[thread overview]
Message-ID: <55A65E6F.4090400@citrix.com> (raw)
In-Reply-To: <1436946351-21118-21-git-send-email-yanghy@cn.fujitsu.com>

On 15/07/15 08:45, Yang Hongyang wrote:
> In COLO mode, both VMs are running, and are considered in sync if the
> visible network traffic is identical.  After some time, they fall out of
> sync.
>
> At this point, the two VMs have definitely diverged.  Lets call the
> primary dirty bitmap set A, while the secondary dirty bitmap set B.
>
> Sets A and B are different.
>
> Under normal migration, the page data for set A will be sent form the
> primary to the secondary.
>
> However, the set difference B - A (lets call this C) is out-of-date on
> the secondary (with respect to the primary) and will not be sent by the
> primary, as it was not memory dirtied by the primary.  The secondary
> needs the page data for C to reconstruct an exact copy of the primary at
> the checkpoint.
>
> The secondary cannot calculate C as it doesn't know A.  Instead, the
> secondary must send B to the primary, at which point the primary
> calculates the union of A and B (lets call this D) which is all the
> pages dirtied by both the primary and the secondary, and sends all page
> data covered by D.
>
> In the general case, D is a superset of both A and B.  Without the
> backchannel dirty bitmap, a COLO checkpoint can't reconstruct a valid
> copy of the primary.
>
> We transfer the dirty bitmap on libxc side, so we need to introduce back
> channel to libxc.
>
> Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
> commit message:
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> CC: Ian Campbell <Ian.Campbell@citrix.com>
> CC: Ian Jackson <Ian.Jackson@eu.citrix.com>
> CC: Wei Liu <wei.liu2@citrix.com>
> ---
>  tools/libxc/include/xenguest.h   |  8 ++++----
>  tools/libxc/xc_domain_restore.c  |  4 ++--
>  tools/libxc/xc_domain_save.c     |  4 ++--
>  tools/libxc/xc_sr_restore.c      |  2 +-
>  tools/libxc/xc_sr_save.c         |  2 +-
>  tools/libxl/libxl_save_callout.c | 39 ++++++++++++++++++++++++++-------------
>  tools/libxl/libxl_save_helper.c  |  8 ++++++--
>  7 files changed, 42 insertions(+), 25 deletions(-)

You have not patched xc_nomigrate.c, which means this will break the ARM
build.  (I fell into the same trap, requiring c/s f50fe3a5 as a fixup).

Having said that, I plan to throw together some cleanup patches removing
files like xc_domain_{save,restore}.c and dropping most of the
parameters from the parameter list, as they are superfluous.

I will try to get my cleanup done shortly, which should make this prereq
series easier, although I am focusing on some hypervisor side fixes
right at the moment.

~Andrew

  parent reply	other threads:[~2015-07-15 13:21 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-15  7:45 [PATCH v4 --for 4.6 COLOPre 00/25] Prerequisite patches for COLO Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 01/25] tools/libxl: rename libxl__domain_suspend to libxl__domain_save Yang Hongyang
2015-07-15 11:16   ` Ian Campbell
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 02/25] tools/libxl: move domain suspend code into libxl_dom_suspend.c Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 03/25] tools/libxl: move domain resume " Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 04/25] tools/libxl: rename remus checkpoint callbacks Yang Hongyang
2015-07-15 11:17   ` Ian Campbell
2015-07-16  1:43     ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 05/25] libxl/remus: introduce libxl__remus_setup Yang Hongyang
2015-07-15 11:26   ` Ian Campbell
2015-07-16  5:32     ` Yang Hongyang
2015-07-16 10:40       ` Ian Campbell
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 06/25] libxl/remus: introduce libxl__remus_teardown Yang Hongyang
2015-07-15 11:59   ` Ian Campbell
2015-07-16  1:43     ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 07/25] libxl/remus: init checkpoint_callback in Remus checkpoint callback Yang Hongyang
2015-07-15 12:02   ` Ian Campbell
2015-07-15 12:35     ` Yang Hongyang
2015-07-16 10:32       ` Ian Campbell
2015-07-16 11:00         ` Yang Hongyang
2015-07-16 11:16           ` Ian Campbell
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 08/25] tools/libxl: move remus code into libxl_remus.c Yang Hongyang
2015-07-15 12:05   ` Ian Campbell
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 09/25] tools/libxl: move save/restore code into libxl_dom_save.c Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 10/25] libxl/save: Refactor libxl__domain_suspend_state Yang Hongyang
2015-07-15 12:10   ` Ian Campbell
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 11/25] tools/libxc: support to resume uncooperative HVM guests Yang Hongyang
2015-07-15 12:26   ` Ian Campbell
2015-07-16  5:57     ` Yang Hongyang
2015-07-16 15:40       ` Ian Jackson
2015-07-16 16:15         ` Yang Hongyang
2015-07-16 16:27           ` Ian Jackson
2015-12-15  2:05             ` Wen Congyang
2016-01-04 16:33               ` Ian Jackson
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 12/25] tools/libxl: introduce enum type libxl_checkpointed_stream Yang Hongyang
2015-07-15 12:34   ` Ian Campbell
2015-07-15 13:58     ` Yang Hongyang
2015-07-16 10:34       ` Ian Campbell
2015-07-16 10:47         ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 13/25] migration/save: pass checkpointed_stream from libxl to libxc Yang Hongyang
2015-07-15 12:38   ` Ian Campbell
2015-07-16  6:05     ` Yang Hongyang
2015-07-16 10:47       ` Ian Campbell
2015-07-16 16:13       ` Wei Liu
2015-07-16 16:21         ` Yang Hongyang
2015-07-16 16:39           ` Wei Liu
2015-07-16 16:10   ` Wei Liu
2015-07-16 16:24     ` Yang Hongyang
2015-07-16 16:37       ` Wei Liu
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 14/25] tools/libxl: introduce libxl__domain_restore_device_model to load qemu state Yang Hongyang
2015-07-15 12:45   ` Ian Campbell
2015-07-15 13:42     ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 15/25] tools/libxl: check QEMU state before resume dm Yang Hongyang
2015-07-15 12:48   ` Ian Campbell
2015-07-15 12:54     ` Ian Campbell
2015-07-15 13:00       ` Wei Liu
2015-07-15 13:48         ` Ian Campbell
2015-07-15 13:49     ` Ian Campbell
2015-07-16 14:43   ` Wei Liu
2015-07-16 15:43     ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 16/25] tools/libxl: Update libxl_domain_unpause() to support qemu-xen Yang Hongyang
2015-07-15 12:50   ` Ian Campbell
2015-07-16  3:49     ` Yang Hongyang
2015-07-16 10:39       ` Ian Campbell
2015-07-16 10:51         ` Yang Hongyang
2015-07-16 16:26   ` Wei Liu
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 17/25] tools/libxl: introduce libxl__domain_common_switch_qemu_logdirty() Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 18/25] tools/libxl: export logdirty_init Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 19/25] tools/libxl: Add back channel to allow migration target send data back Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 20/25] tools/libx{l, c}: add back channel to libxc Yang Hongyang
2015-07-15 13:13   ` Ian Campbell
2015-07-16  6:29     ` Yang Hongyang
2015-07-16 11:01       ` Ian Campbell
2015-07-15 13:21   ` Andrew Cooper [this message]
2015-07-16  6:07     ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 21/25] tools/libxl: rename remus device to checkpoint device Yang Hongyang
2015-07-15 13:15   ` Ian Campbell
2015-07-15 13:34     ` Yang Hongyang
2015-07-16  9:26       ` Andrew Cooper
2015-07-16  9:29         ` Yang Hongyang
2015-07-15 13:32   ` Ian Campbell
2015-07-15 13:38     ` Yang Hongyang
2015-07-16  9:23     ` Yang Hongyang
2015-07-16  9:31       ` Ian Campbell
2015-07-16  9:36         ` Yang Hongyang
2015-07-16 10:14           ` Ian Campbell
2015-07-16 10:22             ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 22/25] tools/libxl: adjust the indentation Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 23/25] tools/libxl: store remus_ops in checkpoint device state Yang Hongyang
2015-07-15 13:21   ` Ian Campbell
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 24/25] tools/libxl: move remus state into a seperate structure Yang Hongyang
2015-07-15 13:28   ` Ian Campbell
2015-07-15 13:50     ` Yang Hongyang
2015-07-16 10:37       ` Ian Campbell
2015-07-16 11:10         ` Ian Jackson
2015-07-16 11:19           ` Ian Campbell
2015-07-15 15:08   ` Ian Jackson
2015-07-15 15:18     ` Yang Hongyang
2015-07-15  7:45 ` [PATCH v4 --for 4.6 COLOPre 25/25] tools/libxl: seperate device init/cleanup from checkpoint device layer Yang Hongyang
2015-07-15 13:37   ` Ian Campbell
2015-07-16  1:37 ` [PATCH v4 --for 4.6 COLOPre 00/25] Prerequisite patches for COLO Yang Hongyang

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=55A65E6F.4090400@citrix.com \
    --to=andrew.cooper3@citrix.com \
    --cc=eddie.dong@intel.com \
    --cc=guijianfeng@cn.fujitsu.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=rshriram@cs.ubc.ca \
    --cc=wei.liu2@citrix.com \
    --cc=wency@cn.fujitsu.com \
    --cc=xen-devel@lists.xen.org \
    --cc=yanghy@cn.fujitsu.com \
    --cc=yunhong.jiang@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.