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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list