This is not the final version of incremental backup - before we can
accept this series, it needs a lot of polish to pick up cleanups made
possible by Peter's blockdev work, and we need to settle on our Job
API addition (so that the return value of BackupBegin and the
parameter to BackupGetXMLDesc and BackupEnd use the same
representation, whether that be UUID or something else). I also know
that Peter left quite a few comments against v9, many of which I have
not actually attempted to address yet. But it rebases things on top
of the checkpoint work that landed in the 5.6 release, and is still
able to perform the pull-mode incremental backups that I demonstrated
at KVM Forum 2018.
There's still probably crashes in portions of the code that are not
exercised by my demo, and I know that we really want to use qemu's
blockdev image creation instead of calling out to qemu-img create for
preparing the qcow2 scratch image in pull mode. The main point of
this posting is to allow further testing before the actual feature
lands in an upstream libvirt release.
I've pushed a tag backup-v10 to both my libvirt.git and
libvirt-python.git repos to match:
https://repo.or.cz/libvirt/ericb.git/shortlog/refs/tags/backup-v10
https://repo.or.cz/libvirt-python/ericb.git/shortlog/refs/tags/backup-v10
001/10:[0033] [FC] 'backup: qemu: Implement VIR_DOMAIN_CHECKPOINT_XML_SIZE flag'
002/10:[0002] [FC] 'backup: Document new XML for backups'
003/10:[0010] [FC] 'backup: Introduce virDomainBackup APIs'
004/10:[0031] [FC] 'backup: Implement backup APIs for remote driver'
005/10:[----] [--] 'backup: Parse and output backup XML'
006/10:[----] [--] 'backup: Implement virsh support for backup'
007/10:[0025] [FC] 'backup: qemu: Implement framework for backup job APIs'
008/10:[0002] [FC] 'backup: Wire up qemu full pull backup commands over QMP'
009/10:[----] [--] 'backup: qemu: Wire up qemu full push backup commands over
QMP'
010/10:[0017] [FC] 'backup: Implement qemu incremental pull backup'
Eric Blake (10):
backup: qemu: Implement VIR_DOMAIN_CHECKPOINT_XML_SIZE flag
backup: Document new XML for backups
backup: Introduce virDomainBackup APIs
backup: Implement backup APIs for remote driver
backup: Parse and output backup XML
backup: Implement virsh support for backup
backup: qemu: Implement framework for backup job APIs
backup: Wire up qemu full pull backup commands over QMP
backup: qemu: Wire up qemu full push backup commands over QMP
backup: Implement qemu incremental pull backup
include/libvirt/libvirt-domain.h | 41 +-
src/conf/backup_conf.h | 94 +++
src/conf/virconftypes.h | 3 +
src/driver-hypervisor.h | 14 +
src/qemu/qemu_blockjob.h | 1 +
src/qemu/qemu_domain.h | 4 +
src/qemu/qemu_monitor.h | 4 +
src/qemu/qemu_monitor_json.h | 4 +
docs/docs.html.in | 3 +-
docs/format.html.in | 1 +
docs/formatbackup.html.in | 184 +++++
docs/formatcheckpoint.html.in | 12 +-
docs/index.html.in | 3 +-
docs/schemas/domainbackup.rng | 219 ++++++
examples/c/misc/event-test.c | 3 +
libvirt.spec.in | 1 +
mingw-libvirt.spec.in | 2 +
src/conf/Makefile.inc.am | 2 +
src/conf/backup_conf.c | 546 +++++++++++++++
src/conf/domain_conf.c | 2 +-
src/libvirt-domain-checkpoint.c | 7 +-
src/libvirt-domain.c | 219 ++++++
src/libvirt_private.syms | 8 +-
src/libvirt_public.syms | 7 +
src/qemu/qemu_blockjob.c | 3 +
src/qemu/qemu_domain.c | 35 +-
src/qemu/qemu_driver.c | 684 ++++++++++++++++++-
src/qemu/qemu_monitor.c | 11 +
src/qemu/qemu_monitor_json.c | 84 +++
src/qemu/qemu_process.c | 8 +
src/remote/remote_driver.c | 3 +
src/remote/remote_protocol.x | 54 +-
src/remote_protocol-structs | 28 +
tests/Makefile.am | 2 +
tests/domainbackupxml2xmlin/backup-pull.xml | 9 +
tests/domainbackupxml2xmlin/backup-push.xml | 9 +
tests/domainbackupxml2xmlin/empty.xml | 1 +
tests/domainbackupxml2xmlout/backup-pull.xml | 9 +
tests/domainbackupxml2xmlout/backup-push.xml | 9 +
tests/domainbackupxml2xmlout/empty.xml | 7 +
tests/virschematest.c | 2 +
tools/virsh-domain.c | 253 ++++++-
tools/virsh.pod | 49 ++
43 files changed, 2623 insertions(+), 21 deletions(-)
create mode 100644 src/conf/backup_conf.h
create mode 100644 docs/formatbackup.html.in
create mode 100644 docs/schemas/domainbackup.rng
create mode 100644 src/conf/backup_conf.c
create mode 100644 tests/domainbackupxml2xmlin/backup-pull.xml
create mode 100644 tests/domainbackupxml2xmlin/backup-push.xml
create mode 100644 tests/domainbackupxml2xmlin/empty.xml
create mode 100644 tests/domainbackupxml2xmlout/backup-pull.xml
create mode 100644 tests/domainbackupxml2xmlout/backup-push.xml
create mode 100644 tests/domainbackupxml2xmlout/empty.xml
--
2.21.0