[libvirt] [RFC: PATCH 00/13] live block migration via virDomainBlockCopy

Eric Blake eblake at redhat.com
Tue Apr 3 04:43:08 UTC 2012


This is in response to my discussion with Paolo here:
https://www.redhat.com/archives/libvir-list/2012-March/msg01171.html

It also picks up an old patch from Adam here (now split into two):
https://www.redhat.com/archives/libvir-list/2012-January/msg00562.html

Patches 1-12 are in pretty good shape, while patch 13 is still a work
in progress.  I can test a lot of the pieces, but still have several
patches to go before I can fully test the new API.  I'm posting this
now to at least start some review on the earlier pieces, and to get
consensus that the API and XML changes are correct.

None of these patches should be applied until after 0.9.11 is released,
and even then, we still want confirmation of whether upstream qemu 1.1
will include complete support for block mirroring.

For anyone trying to backport this feature to 0.9.10 .so API, I've
made sure that you can just omit patches 5 and 6, and that everything
else will backport cleanly to give you the new feature through just
the public virDomainBlockRebase() call.

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

Eric Blake (11):
  blockjob: add new API flags
  blockjob: add 'blockcopy' to virsh
  blockjob: add virDomainBlockCopy
  blockjob: enhance virsh 'blockcopy'
  blockjob: wire up RPC for block copy
  blockjob: enhance xml to track mirrors across libvirtd restart
  blockjob: react to active block copy
  blockjob: expose qemu commands for mirrored storage migration
  blockjob: query backing file of a disk
  blockjob: return appropriate event and info
  WIP: blockjob: implement block copy for qemu

 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        |   77 +++++++++++++++
 src/conf/domain_conf.h        |   14 +++
 src/driver.h                  |    6 +
 src/libvirt.c                 |  216 +++++++++++++++++++++++++++++++++++++++--
 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_conf.h          |    1 +
 src/qemu/qemu_driver.c        |  211 ++++++++++++++++++++++++++++++++++++++--
 src/qemu/qemu_hotplug.c       |    7 ++
 src/qemu/qemu_monitor.c       |   60 +++++++++++-
 src/qemu/qemu_monitor.h       |   23 +++++
 src/qemu/qemu_monitor_json.c  |  128 ++++++++++++++++++++++--
 src/qemu/qemu_monitor_json.h  |   21 ++++-
 src/qemu/qemu_process.c       |   19 ++++
 src/remote/remote_driver.c    |    1 +
 src/remote/remote_protocol.x  |   13 +++-
 src/remote_protocol-structs   |   10 ++
 src/rpc/gendispatch.pl        |    1 +
 src/util/virterror.c          |    6 +
 tools/virsh.c                 |  135 ++++++++++++++++++++-----
 tools/virsh.pod               |   33 ++++++-
 28 files changed, 1007 insertions(+), 68 deletions(-)

-- 
1.7.7.6




More information about the libvir-list mailing list