[libvirt] [PATCHv3 00/16] live block migration via virDomainBlockCopy

Eric Blake eblake at redhat.com
Fri Apr 6 18:29:31 UTC 2012


v1 was here:
https://www.redhat.com/archives/libvir-list/2012-April/msg00068.html
v2 was here:
https://www.redhat.com/archives/libvir-list/2012-April/msg00222.html

changes from v2: added patch 12/16, addressed some review comments
and made minor changes from more of my own testing

CAVEAT: Paolo and I had an IRC conversation, where we decided that
'drive-mirror' might do better to take a mandatory 'full':'bool'
(or an even more powerful optional '*base':'str') argument for
determining how much to stream (full vs. shallow, or even the
backing file of the copy as matching the base argument of
'block_stream') rather than overloading the 'mode':'no-backing-file'
as the only way to get a full pull.  If that change goes in qemu,
then we will need a v4, to tweak how the 'drive-mirror' monitor
command is called, and take advantage of the additional flexibility
it offers.

changes from v1: Paolo has updated the qemu side of things, and built
a scratch image for RHEL that I was able to test with for the new
semantics.  I was actually able to successfully run two different
block copy jobs, one canceled and one pivoted, with SELinux disabled
and this patch series.

Patch 13/16 is for reference only when working with Paolo's build;
it will not go upstream.

Patches 14-16 are optional; the extra flexibility might be nice, but
I haven't yet played with those three enough to know if Paolo's build
behaves like I was expecting.

Adam Litke (2):
  blockjob: add API for async virDomainBlockJobAbort
  blockjob: wire up qemu async virDomainBlockJobAbort

Eric Blake (14):
  blockjob: allow for fast-finishing job
  blockjob: add new API flags
  blockjob: add 'blockcopy' to virsh
  blockjob: enhance xml to track mirrors across libvirtd restart
  blockjob: react to active block copy
  blockjob: expose qemu commands for mirrored storage migration
  blockjob: return appropriate event and info
  blockjob: support pivot operation on cancel
  blockjob: implement block copy for qemu
  blockjob: allow for existing files
  blockjob: accommodate RHEL backport names
  blockjob: add virDomainBlockCopy
  blockjob: enhance virsh 'blockcopy'
  blockjob: wire up qemu and RPC for block copy

 docs/apibuild.py              |    1 +
 docs/formatdomain.html.in     |   11 ++
 docs/schemas/domaincommon.rng |   19 ++-
 include/libvirt/libvirt.h.in  |   50 +++++-
 include/libvirt/virterror.h   |    1 +
 src/conf/domain_conf.c        |   54 ++++++
 src/conf/domain_conf.h        |    6 +
 src/driver.h                  |    5 +
 src/libvirt.c                 |  220 +++++++++++++++++++++++-
 src/libvirt_private.syms      |    1 +
 src/libvirt_public.syms       |    5 +
 src/qemu/qemu_capabilities.c  |    3 +
 src/qemu/qemu_capabilities.h  |    2 +
 src/qemu/qemu_driver.c        |  379 +++++++++++++++++++++++++++++++++++++++--
 src/qemu/qemu_hotplug.c       |    7 +
 src/qemu/qemu_monitor.c       |   50 ++++++
 src/qemu/qemu_monitor.h       |   26 +++-
 src/qemu/qemu_monitor_json.c  |  166 +++++++++++++++---
 src/qemu/qemu_monitor_json.h  |   19 ++-
 src/remote/remote_driver.c    |    1 +
 src/remote/remote_protocol.x  |   12 ++-
 src/remote_protocol-structs   |    9 +
 src/rpc/gendispatch.pl        |    1 +
 src/util/virterror.c          |    6 +
 tools/virsh.c                 |  140 ++++++++++++---
 tools/virsh.pod               |   40 ++++-
 26 files changed, 1143 insertions(+), 91 deletions(-)

-- 
1.7.7.6




More information about the libvir-list mailing list