xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v12 00/26] COarse-grain LOck-stepping Virtual Machines for Non-stop Service
@ 2016-03-23  8:06 Changlong Xie
  2016-03-23  8:06 ` [PATCH v12 01/26] tools/libxl: introduction of libxl__qmp_restore to load qemu state Changlong Xie
                   ` (26 more replies)
  0 siblings, 27 replies; 61+ messages in thread
From: Changlong Xie @ 2016-03-23  8:06 UTC (permalink / raw)
  To: xen devel, Konrad Rzeszutek Wilk, Andrew Cooper, Ian Campbell,
	Ian Jackson, Wei Liu
  Cc: Lars Kurth, Changlong Xie, Wen Congyang, Li Zhijian,
	Gui Jianfeng, Jiang Yunhong, Dong Eddie, Anthony Perard,
	Shriram Rajagopalan, Yang Hongyang

This patchset implemented the COLO feature for Xen.
For detail/install/use of COLO feature, refer to:
http://wiki.xen.org/wiki/COLO_-_Coarse_Grain_Lock_Stepping

You can get the codes from here:
https://github.com/Pating/xen/tree/changlox/colo_v12

Changlog from v11 to v12
1. Rebase to the upstream xen
2. Address commnets from Ian, Liu Wei and Konard.
Removed old p12,p13; introduce a new p13 what is splited out from old p15, introduce
a new p19 what is splited out from old p20.
p1, add A-B, and will update commit message when "xen-load-devices-state" relevant
patch merged on qemu side
p3, update comments, add assert() in libxl_domain_create_restore() 
p4, rename "dup_fd_helper" as "dup_cloexec", add missed newline
p5, add A-B
p7, remove repeated commit message, update the specification of libxl 
p8, update the specification of libxc 
p9, add A-B
p10, update commit message, fix blank line issue
p12, merged by old p12,p13(restore_callbacks wait_checkpoit/postcopy/suspend), fix blank
line issues, update comments about why COLO only supports HVM 
p13, move stream read manipulations to right place in libxl_internal.h  
p14, merged by old p12(save_callbacks wait_checkpoint), fix blank line issues, update Copyright(C)
p16, add "colo_" prefix for merge_secondary_dirty_bitmap()
p17, update COLO description part on man page
p18, fix long line issue
p19, just introduce colo mode and refactor relevant functions
p20, fix repetitive code in libxl__device_disk_from_xs_be(), make colo_port as int,  
remove unnecessary comments in libxl__build_device_model_args_new(), simplify 
disk_try_backend() and move the main part to in colo_qdisk_setup() in p21 
p21, fix blank line issue, update Copyright(C)
p22, merged by old p22,p23, update Copyright(C), add commets for NETLINK_COLO, remove unnecessary
'{ }', update url in commit message 
p23, fix blank line issue, add some comments for "forwarddev", update Copyright(C)
p24, introduce COLO_PROXY_CHECKPOINT_TIMEOUT, ASYNC_CALL 
p26, move colo_proxy_script setup codes to libxl__colo_restore_setup(), introduce long options
for main_migrate_receive() 

Changlog from v10 to v11
1. Rebased to then upstream xen
2. Address comments from Liu Wei 
p1, update commit message and remove libxl__domain_restore_device_model
p4, add A-B
p5, update commit message
p6, add A-B
p7,p8 add email address and direction info
p10, merged by old p10,p11 and update comments
p11, merged by old p12,p13 and update comments
p14,p15 move colo structures and functions into libxl_colo.h, and list callbacks
in order, also update commit message
p16, merged by old p18,p19,p20 and remove TODOs
p17, use original code for checking postcopy return value
p18, simplify *if* logic, fix wrong comments, and unset dom_info.quiet in COLO 
p19, add A-B 
p20, fix code style, update comments and man page 
p21,p22,p23,p24 move colo structures and functions into libxl_colo.h 

Changlog from v9 to v10
1. Rebased to the upstream xen
2. Fix one bug found in the test
3. Merge some patches from prepare series
4. Split patch 5 to two patches(patch 4 and 5) according to the comments from
   Wei Liu

Changlog from v8 to v9:
1. Rebased to the upstream xen
2. Fix some bugs found in the test

Changelog from v7 to v8:
1. Rebased to the latest libxl migration v2.

Changelog from v6 to v7:
1. Ported to Libxl migration v2
2. Send dirty bitmap from secondary to primary on libxc side
3. Address review comments

Changelog from v5 to v6:
1. based on migration v2(libxc)
2. split the patchset into prerequisite patchset and this main patchset.

Changelog from v4 to v5:
1. rebase to the latest xen upstream
2. disk replication: blktap2->qdisk
3. nic replication: colo-agent->colo-proxy

Changelog from v3 to v4:
1. rebase to newest xen
2. bug fix

Changlog from v2 to v3:
1. rebase to newest remus
2. add nic replication support

Changlog from v1 to v2:
1. rebase to newest remus
2. add disk replication support

Changlong Xie (2):
  libxl_internal: move stream read manipulations to right place
  Introduce COLO mode and refactor relevant function

Wen Congyang (24):
  tools/libxl: introduction of libxl__qmp_restore to load qemu state
  tools/libxl: introduce libxl__domain_common_switch_qemu_logdirty()
  tools/libxl: Add back channel to allow migration target send data back
  tools/libxl: Introduce new helper function dup_fd_helper()
  tools/libx{l,c}: add back channel to libxc
  docs: add colo readme
  docs/libxl: Introduce CHECKPOINT_CONTEXT to support migration v2 colo
    streams
  libxc/migration: Specification update for DIRTY_PFN_LIST records
  libxc/migration: export read_record for common use
  tools/libxl: add back channel support to write stream
  tools/libxl: add back channel support to read stream
  secondary vm suspend/resume/checkpoint code
  primary vm suspend/resume/checkpoint code
  libxc/restore: support COLO restore
  libxc/save: support COLO save
  implement the cmdline for COLO
  COLO: introduce new API to prepare/start/do/get_error/stop replication
  Support colo mode for qemu disk
  COLO: use qemu block replication
  COLO proxy: implement setup/teardown/preresume/postresume/checkpoint
  COLO nic: implement COLO nic subkind
  setup and control colo proxy on primary side
  setup and control colo proxy on secondary side
  cmdline switches and config vars to control colo-proxy

 docs/README.colo                         |    9 +
 docs/man/xl.conf.pod.5                   |    6 +
 docs/man/xl.pod.1                        |   48 +-
 docs/misc/xl-disk-configuration.txt      |   53 ++
 docs/specs/libxc-migration-stream.pandoc |   27 +-
 docs/specs/libxl-migration-stream.pandoc |   59 +-
 tools/hotplug/Linux/Makefile             |    1 +
 tools/hotplug/Linux/colo-proxy-setup     |  135 ++++
 tools/libxc/include/xenguest.h           |   41 +-
 tools/libxc/xc_nomigrate.c               |    4 +-
 tools/libxc/xc_sr_common.c               |   80 ++-
 tools/libxc/xc_sr_common.h               |   24 +-
 tools/libxc/xc_sr_restore.c              |  246 +++++--
 tools/libxc/xc_sr_save.c                 |  100 ++-
 tools/libxc/xc_sr_stream_format.h        |   31 +-
 tools/libxl/Makefile                     |    4 +
 tools/libxl/libxl.c                      |   87 ++-
 tools/libxl/libxl.h                      |   29 +-
 tools/libxl/libxl_colo.h                 |  143 ++++
 tools/libxl/libxl_colo_nic.c             |  320 +++++++++
 tools/libxl/libxl_colo_proxy.c           |  277 ++++++++
 tools/libxl/libxl_colo_qdisk.c           |  230 +++++++
 tools/libxl/libxl_colo_restore.c         | 1087 ++++++++++++++++++++++++++++++
 tools/libxl/libxl_colo_save.c            |  694 +++++++++++++++++++
 tools/libxl/libxl_create.c               |   88 ++-
 tools/libxl/libxl_device.c               |   11 +
 tools/libxl/libxl_dm.c                   |  177 ++++-
 tools/libxl/libxl_dom_save.c             |  103 +--
 tools/libxl/libxl_internal.h             |  216 ++++--
 tools/libxl/libxl_qmp.c                  |  106 +++
 tools/libxl/libxl_remus_disk_drbd.c      |   38 +-
 tools/libxl/libxl_save_callout.c         |   53 +-
 tools/libxl/libxl_save_helper.c          |    8 +-
 tools/libxl/libxl_save_msgs_gen.pl       |   13 +-
 tools/libxl/libxl_sr_stream_format.h     |   11 +
 tools/libxl/libxl_stream_read.c          |  106 ++-
 tools/libxl/libxl_stream_write.c         |  100 ++-
 tools/libxl/libxl_types.idl              |   13 +
 tools/libxl/libxlu_disk_l.l              |   17 +
 tools/libxl/xl.c                         |    3 +
 tools/libxl/xl.h                         |    1 +
 tools/libxl/xl_cmdimpl.c                 |  108 ++-
 tools/libxl/xl_cmdtable.c                |    4 +-
 tools/ocaml/libs/xl/xenlight_stubs.c     |    2 +-
 tools/python/xen/migration/libxc.py      |   68 +-
 tools/python/xen/migration/libxl.py      |    9 +
 46 files changed, 4616 insertions(+), 374 deletions(-)
 create mode 100644 docs/README.colo
 create mode 100755 tools/hotplug/Linux/colo-proxy-setup
 create mode 100644 tools/libxl/libxl_colo.h
 create mode 100644 tools/libxl/libxl_colo_nic.c
 create mode 100644 tools/libxl/libxl_colo_proxy.c
 create mode 100644 tools/libxl/libxl_colo_qdisk.c
 create mode 100644 tools/libxl/libxl_colo_restore.c
 create mode 100644 tools/libxl/libxl_colo_save.c

-- 
1.9.3




_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 61+ messages in thread
* Re: [PATCH v12 20/26] Support colo mode for qemu disk
@ 2016-03-24 15:53 Ian Jackson
  0 siblings, 0 replies; 61+ messages in thread
From: Ian Jackson @ 2016-03-24 15:53 UTC (permalink / raw)
  To: Changlong Xie, Wen Congyang
  Cc: Lars Kurth, Wei Liu, Ian Campbell, Li Zhijian, Andrew Cooper,
	Jiang Yunhong, Dong Eddie, xen devel, Anthony Perard,
	Gui Jianfeng, Shriram Rajagopalan, Yang Hongyang

Wen Congyang writes ("Re: [PATCH v11 20/27] Support colo mode for qemu disk"):
> On 03/18/2016 01:18 AM, Ian Jackson wrote:
> > If so, what software, where, arranges for the management of the
> > different qcow2 `layers' ?  Ie, what creates the layers; what resynchs
> > them, etc. ?
> 
> active disk and hidden disk are seperate disk. The management application
> can create an empty qcow disk before running COLO. These two disks are
> empty disk, and have the same size with the secondary disk.

It is a shame that this management code is not also here.

We would like to have enough management code in xen.git that we can
introduce a COLO test in osstest.  That will ensure that your feature
does not regress.

> > Would it be possible for these disk names to have formulaic,
> > predicatable, names, so that they wouldn't need to be specified
> > separately ?

Unfortunately, AFAICT, I have not had an answer to this question.  I
think COLO is too important a feature to block because of these
concerns.  It is probably too late for 4.7 to address this fully.

However I don't want to declare this API stable and fully supported,
as it is.

So can you please add comments to this patch saying

  Note that the COLO configuration settings should be considered
  unstable.  They may change incompatibly in future versions of
  Xen.

This should appear (at least) three times: in xl.pod.1,
xl-disk-configuration.txt and libxl_types.idl.  With such a change, I
will ack this patch.

In practice this means that it will not be feasible to support COLO
via libvirt or ganeti, for example.  But I think given your comments
above that there are pieces missing from what is going into xen.git,
anyway.

I hope we can continue this conversation after Xen 4.7 is released, to
try to stabilise this API and maybe move some of the setup code into
xen.git.

Thanks,
Ian.

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

^ permalink raw reply	[flat|nested] 61+ messages in thread

end of thread, other threads:[~2016-03-28  3:21 UTC | newest]

Thread overview: 61+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-23  8:06 [PATCH v12 00/26] COarse-grain LOck-stepping Virtual Machines for Non-stop Service Changlong Xie
2016-03-23  8:06 ` [PATCH v12 01/26] tools/libxl: introduction of libxl__qmp_restore to load qemu state Changlong Xie
2016-03-23  8:06 ` [PATCH v12 02/26] tools/libxl: introduce libxl__domain_common_switch_qemu_logdirty() Changlong Xie
2016-03-23  8:06 ` [PATCH v12 03/26] tools/libxl: Add back channel to allow migration target send data back Changlong Xie
2016-03-23  8:06 ` [PATCH v12 04/26] tools/libxl: Introduce new helper function dup_fd_helper() Changlong Xie
2016-03-23  8:06 ` [PATCH v12 05/26] tools/libx{l, c}: add back channel to libxc Changlong Xie
2016-03-23  8:06 ` [PATCH v12 06/26] docs: add colo readme Changlong Xie
2016-03-23  8:06 ` [PATCH v12 07/26] docs/libxl: Introduce CHECKPOINT_CONTEXT to support migration v2 colo streams Changlong Xie
2016-03-24 14:53   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 08/26] libxc/migration: Specification update for DIRTY_PFN_LIST records Changlong Xie
2016-03-24 14:56   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 09/26] libxc/migration: export read_record for common use Changlong Xie
2016-03-23  8:06 ` [PATCH v12 10/26] tools/libxl: add back channel support to write stream Changlong Xie
2016-03-24 16:49   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 11/26] tools/libxl: add back channel support to read stream Changlong Xie
2016-03-24 14:57   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 12/26] secondary vm suspend/resume/checkpoint code Changlong Xie
2016-03-24 15:15   ` Ian Jackson
2016-03-25  2:00     ` Changlong Xie
2016-03-23  8:06 ` [PATCH v12 13/26] libxl_internal: move stream read manipulations to right place Changlong Xie
2016-03-24 15:17   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 14/26] primary vm suspend/resume/checkpoint code Changlong Xie
2016-03-24 15:24   ` Ian Jackson
2016-03-25  2:00     ` Changlong Xie
2016-03-25  6:33     ` Changlong Xie
2016-03-23  8:06 ` [PATCH v12 15/26] libxc/restore: support COLO restore Changlong Xie
2016-03-24 15:27   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 16/26] libxc/save: support COLO save Changlong Xie
2016-03-24 15:28   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 17/26] implement the cmdline for COLO Changlong Xie
2016-03-24 15:34   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 18/26] COLO: introduce new API to prepare/start/do/get_error/stop replication Changlong Xie
2016-03-23  8:06 ` [PATCH v12 19/26] Introduce COLO mode and refactor relevant function Changlong Xie
2016-03-24 15:45   ` Ian Jackson
2016-03-25  2:02     ` Changlong Xie
2016-03-23  8:06 ` [PATCH v12 20/26] Support colo mode for qemu disk Changlong Xie
2016-03-23  8:06 ` [PATCH v12 21/26] COLO: use qemu block replication Changlong Xie
2016-03-24 15:54   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 22/26] COLO proxy: implement setup/teardown/preresume/postresume/checkpoint Changlong Xie
2016-03-24 15:59   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 23/26] COLO nic: implement COLO nic subkind Changlong Xie
2016-03-24 16:05   ` Ian Jackson
2016-03-25  2:29     ` Changlong Xie
2016-03-25  6:09     ` Changlong Xie
2016-03-25 12:23       ` Wei Liu
2016-03-28  3:20         ` Changlong Xie
2016-03-23  8:06 ` [PATCH v12 24/26] setup and control colo proxy on primary side Changlong Xie
2016-03-24 16:06   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 25/26] setup and control colo proxy on secondary side Changlong Xie
2016-03-24 16:06   ` Ian Jackson
2016-03-23  8:06 ` [PATCH v12 26/26] cmdline switches and config vars to control colo-proxy Changlong Xie
2016-03-24 16:12   ` Ian Jackson
2016-03-25  2:57     ` Changlong Xie
2016-03-25  6:10     ` Changlong Xie
2016-03-25 12:29       ` Wei Liu
2016-03-28  3:21         ` Changlong Xie
2016-03-24 16:21 ` [PATCH v12 00/26] COarse-grain LOck-stepping Virtual Machines for Non-stop Service Ian Jackson
2016-03-24 16:43   ` Lars Kurth
2016-03-24 17:06   ` Wei Liu
2016-03-24 17:07     ` Ian Jackson
2016-03-24 15:53 [PATCH v12 20/26] Support colo mode for qemu disk Ian Jackson

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).