I'm offline the rest of this week, but wanted to post the
progress I've made on patches towards the Incremental Backup RFC:
https://www.redhat.com/archives/libvir-list/2018-May/msg01403.html
Comments welcome, including any naming suggestions
Still to go:
- Add .rng file for validating the XML format used in virDomainBackupBegin()
- Add flags for validating XML
- Add src/conf/checkpoint_conf.c mirroring src/conf/snapshot_conf.c for
tracking tree of checkpoints
- Add virsh wrappers for calling everything
- Add qemu implementation - my first addition will probably just be for
push model full backups, then additional patches to expand into
pull model (on the qemu list, I still need to review and incorporate
Vladimir's patches for exporting a bitmap over NBD)
- Bug fixes (but why would there be any bugs in the first place? :)
I've got portions of the qemu code working locally, but not polished
enough to post as a patch yet; my end goal is to have a working demo
against current qemu.git showing the use of virDomainBackupBegin()
for incremental backups with the push model prior to the code freeze
for 4.5.0 this month, even if that code doesn't get checked into
libvirt until later when the qemu code is changed to drop x- prefixes.
(That is, I'm hoping to demo that my API is sound, and thus we can
include the entrypoints in the libvirt.so for this release, even if
the libvirt code for driving pull mode over qemu waits until after a
qemu release where the pieces are promoted to a stable form.)
Eric Blake (8):
snapshots: Avoid term 'checkpoint' for full system snapshot
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
docs/Makefile.am | 3 +
docs/apibuild.py | 2 +
docs/docs.html.in | 9 +-
docs/domainstatecapture.html.in | 190 ++++++
docs/formatcheckpoint.html.in | 273 +++++++++
docs/formatsnapshot.html.in | 16 +-
docs/schemas/domaincheckpoint.rng | 89 +++
include/libvirt/libvirt-domain-checkpoint.h | 158 +++++
include/libvirt/libvirt-domain-snapshot.h | 10 +-
include/libvirt/libvirt-domain.h | 14 +-
include/libvirt/libvirt.h | 3 +-
include/libvirt/virterror.h | 5 +-
libvirt.spec.in | 2 +
mingw-libvirt.spec.in | 4 +
po/POTFILES | 1 +
src/Makefile.am | 2 +
src/access/viraccessperm.c | 5 +-
src/access/viraccessperm.h | 8 +-
src/conf/snapshot_conf.c | 2 +-
src/datatypes.c | 62 +-
src/datatypes.h | 31 +-
src/driver-hypervisor.h | 74 ++-
src/libvirt-domain-checkpoint.c | 908 ++++++++++++++++++++++++++++
src/libvirt-domain-snapshot.c | 4 +-
src/libvirt-domain.c | 8 +-
src/libvirt_private.syms | 2 +
src/libvirt_public.syms | 19 +
src/qemu/qemu_driver.c | 12 +-
src/remote/remote_daemon_dispatch.c | 15 +
src/remote/remote_driver.c | 31 +-
src/remote/remote_protocol.x | 237 +++++++-
src/remote_protocol-structs | 129 ++++
src/rpc/gendispatch.pl | 32 +-
src/util/virerror.c | 15 +-
tests/domaincheckpointxml2xmlin/empty.xml | 1 +
tests/domaincheckpointxml2xmlout/empty.xml | 10 +
tests/virschematest.c | 2 +
tools/virsh-domain.c | 3 +-
tools/virsh-snapshot.c | 2 +-
tools/virsh.pod | 14 +-
40 files changed, 2347 insertions(+), 60 deletions(-)
create mode 100644 docs/domainstatecapture.html.in
create mode 100644 docs/formatcheckpoint.html.in
create mode 100644 docs/schemas/domaincheckpoint.rng
create mode 100644 include/libvirt/libvirt-domain-checkpoint.h
create mode 100644 src/libvirt-domain-checkpoint.c
create mode 100644 tests/domaincheckpointxml2xmlin/empty.xml
create mode 100644 tests/domaincheckpointxml2xmlout/empty.xml
--
2.14.4