The following is the latest version of my API proposal for incremental backups. I have even more work-in-progress patches on top of these: https://repo.or.cz/libvirt/ericb.git which I am slowly improving to be more in line with my thread on the overview of the API usage: https://www.redhat.com/archives/libvir-list/2018-October/msg00217.html But I am fairly satisfied that the API as presented is sufficient for everything I have still been implementing in the qemu driver, and that even when qemu is slightly tweaked (such as dropping the x- prefix on various commands, or maybe adding a new command to make it easier to compute the estimated size of the union of several bitmaps), those changes will be limited to the src/qemu directory rather than affecting the API. Since I will be demonstrating the use of this API at the KVM Forum, I would really like a decision on whether we can commit the API into libvirt now, even if we have to wait for the qemu implementation of the API until qemu stabilizes its interfaces (also, having the libvirt API in place gives qemu an incentive to drop the x- prefix sooner rather than later). That in turn implies that I need code reviews; John Ferlan started reviewing v1, but mostly focused on the documentation grammar: https://www.redhat.com/archives/libvir-list/2018-June/msg01066.html The following gives an idea of how this series has changed since June (in part due to rebases, in part due to documentation improvements): The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/9:[0050] [FC] 'snapshots: Avoid term 'checkpoint' for full system snapshot' 002/9:[down] 'domain_conf: Expose virDomainStorageNetworkParseHost' 003/9:[0342] [FC] 'backup: Document nuances between different state capture APIs' 004/9:[0007] [FC] 'backup: Introduce virDomainCheckpointPtr' 005/9:[0100] [FC] 'backup: Document new XML for backups' 006/9:[0042] [FC] 'backup: Introduce virDomainCheckpoint APIs' 007/9:[0035] [FC] 'backup: Introduce virDomainBackup APIs' 008/9:[----] [--] 'backup: Add new domain:checkpoint access control' 009/9:[0039] [FC] 'backup: Implement backup APIs for remote driver' Eric Blake (9): snapshots: Avoid term 'checkpoint' for full system snapshot domain_conf: Expose virDomainStorageNetworkParseHost backup: Document nuances between different state capture APIs backup: Introduce virDomainCheckpointPtr backup: Document new XML for backups backup: Introduce virDomainCheckpoint APIs backup: Introduce virDomainBackup APIs backup: Add new domain:checkpoint access control backup: Implement backup APIs for remote driver include/libvirt/virterror.h | 6 +- src/util/virerror.c | 21 +- include/libvirt/libvirt-domain-checkpoint.h | 177 ++++ include/libvirt/libvirt-domain-snapshot.h | 2 +- include/libvirt/libvirt-domain.h | 14 +- include/libvirt/libvirt.h | 3 +- src/access/viraccessperm.h | 8 +- src/conf/domain_conf.h | 2 + src/datatypes.h | 31 +- src/driver-hypervisor.h | 74 +- docs/Makefile.am | 3 + docs/apibuild.py | 2 + docs/docs.html.in | 9 +- docs/domainstatecapture.html.in | 314 +++++++ docs/format.html.in | 1 + docs/formatcheckpoint.html.in | 285 ++++++ docs/formatsnapshot.html.in | 33 +- docs/index.html.in | 3 +- docs/schemas/domainbackup.rng | 185 ++++ docs/schemas/domaincheckpoint.rng | 94 ++ libvirt.spec.in | 3 + mingw-libvirt.spec.in | 6 + po/POTFILES | 1 + src/Makefile.am | 2 + src/access/viraccessperm.c | 5 +- src/conf/domain_conf.c | 43 +- src/conf/snapshot_conf.c | 4 +- src/datatypes.c | 62 +- src/libvirt-domain-checkpoint.c | 936 +++++++++++++++++++ src/libvirt-domain-snapshot.c | 7 +- src/libvirt-domain.c | 8 +- src/libvirt_private.syms | 3 + src/libvirt_public.syms | 23 + src/qemu/qemu_driver.c | 12 +- src/remote/remote_daemon_dispatch.c | 15 + src/remote/remote_driver.c | 33 +- src/remote/remote_protocol.x | 240 ++++- src/remote_protocol-structs | 129 +++ src/rpc/gendispatch.pl | 32 +- tests/Makefile.am | 6 +- 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/domaincheckpointxml2xmlin/empty.xml | 1 + tests/domaincheckpointxml2xmlin/sample.xml | 7 + tests/domaincheckpointxml2xmlout/empty.xml | 10 + tests/domaincheckpointxml2xmlout/sample.xml | 16 + tests/virschematest.c | 4 + tools/virsh-domain.c | 3 +- tools/virsh-snapshot.c | 2 +- tools/virsh.pod | 14 +- 54 files changed, 2846 insertions(+), 92 deletions(-) create mode 100644 include/libvirt/libvirt-domain-checkpoint.h create mode 100644 docs/domainstatecapture.html.in create mode 100644 docs/formatcheckpoint.html.in create mode 100644 docs/schemas/domainbackup.rng create mode 100644 docs/schemas/domaincheckpoint.rng create mode 100644 src/libvirt-domain-checkpoint.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 create mode 100644 tests/domaincheckpointxml2xmlin/empty.xml create mode 100644 tests/domaincheckpointxml2xmlin/sample.xml create mode 100644 tests/domaincheckpointxml2xmlout/empty.xml create mode 100644 tests/domaincheckpointxml2xmlout/sample.xml -- 2.17.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list