[libvirt] [PATCH v8.5 00/13] Checkpoint APIs (incremental backup saga)

Eric Blake posted 13 patches 4 years, 10 months ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190619034754.2708-1-eblake@redhat.com
There is a newer version of this series
include/libvirt/libvirt-domain-checkpoint.h   |  149 ++
include/libvirt/libvirt-domain.h              |    6 +
include/libvirt/libvirt.h                     |    5 +-
src/access/viraccessperm.h                    |    6 +
src/conf/checkpoint_conf.h                    |  101 ++
src/conf/domain_conf.h                        |    2 +
src/conf/virconftypes.h                       |    9 +
src/conf/virdomaincheckpointobjlist.h         |   66 +
src/conf/virdomainmomentobjlist.h             |    5 +-
src/conf/virdomainobjlist.h                   |    7 +-
src/driver-hypervisor.h                       |   48 +
src/qemu/qemu_block.h                         |    3 +
src/qemu/qemu_conf.h                          |    2 +
src/qemu/qemu_domain.h                        |   15 +
src/qemu/qemu_monitor.h                       |    4 +
src/qemu/qemu_monitor_json.h                  |    3 +
tools/virsh-checkpoint.h                      |   26 +
tools/virsh-completer.h                       |    4 +
tools/virsh-util.h                            |    3 +
tools/virsh.h                                 |    1 +
docs/Makefile.am                              |    3 +
docs/apibuild.py                              |    2 +
docs/docs.html.in                             |    9 +-
docs/domainstatecapture.html.in               |  315 ++++
docs/format.html.in                           |    1 +
docs/formatcheckpoint.html.in                 |  204 +++
docs/formatsnapshot.html.in                   |    2 +
docs/index.html.in                            |    3 +-
docs/schemas/domaincheckpoint.rng             |   87 ++
libvirt.spec.in                               |    2 +
mingw-libvirt.spec.in                         |    4 +
po/POTFILES                                   |    3 +
src/Makefile.am                               |    2 +
src/access/viraccessperm.c                    |    3 +-
src/conf/Makefile.inc.am                      |    4 +
src/conf/checkpoint_conf.c                    |  662 ++++++++
src/conf/domain_conf.c                        |    6 +
src/conf/virdomaincheckpointobjlist.c         |  219 +++
src/conf/virdomainmomentobjlist.c             |    2 +-
src/conf/virdomainobjlist.c                   |   11 +
src/libvirt-domain-checkpoint.c               |  670 ++++++++
src/libvirt-domain.c                          |   18 +-
src/libvirt_private.syms                      |   26 +
src/libvirt_public.syms                       |   25 +-
src/qemu/qemu_block.c                         |   12 +
src/qemu/qemu_conf.c                          |    5 +
src/qemu/qemu_domain.c                        |  183 +++
src/qemu/qemu_driver.c                        |  868 +++++++++++
src/qemu/qemu_monitor.c                       |   11 +
src/qemu/qemu_monitor_json.c                  |   76 +
src/remote/remote_daemon_dispatch.c           |   20 +
src/remote/remote_driver.c                    |   26 +-
src/remote/remote_protocol.x                  |  155 +-
src/remote_protocol-structs                   |   85 ++
src/rpc/gendispatch.pl                        |   32 +-
src/test/test_driver.c                        |  461 +++++-
tests/Makefile.am                             |   11 +-
tests/domaincheckpointxml2xmlin/empty.xml     |    1 +
tests/domaincheckpointxml2xmlin/sample.xml    |    7 +
tests/domaincheckpointxml2xmlin/size.xml      |    4 +
tests/domaincheckpointxml2xmlout/empty.xml    |    7 +
.../internal-active-invalid.xml               |   53 +
.../internal-inactive-invalid.xml             |   53 +
tests/domaincheckpointxml2xmlout/redefine.xml |   63 +
tests/domaincheckpointxml2xmlout/sample.xml   |   12 +
tests/domaincheckpointxml2xmlout/size.xml     |   11 +
tests/domaincheckpointxml2xmltest.c           |  223 +++
tests/virschematest.c                         |    2 +
tools/Makefile.am                             |    1 +
tools/virsh-checkpoint.c                      | 1342 +++++++++++++++++
tools/virsh-completer.c                       |   51 +
tools/virsh-domain-monitor.c                  |   23 +
tools/virsh-domain.c                          |    9 +
tools/virsh-util.c                            |   11 +
tools/virsh.c                                 |    2 +
tools/virsh.pod                               |  238 ++-
76 files changed, 6745 insertions(+), 61 deletions(-)
create mode 100644 include/libvirt/libvirt-domain-checkpoint.h
create mode 100644 src/conf/checkpoint_conf.h
create mode 100644 src/conf/virdomaincheckpointobjlist.h
create mode 100644 tools/virsh-checkpoint.h
create mode 100644 docs/domainstatecapture.html.in
create mode 100644 docs/formatcheckpoint.html.in
create mode 100644 docs/schemas/domaincheckpoint.rng
create mode 100644 src/conf/checkpoint_conf.c
create mode 100644 src/conf/virdomaincheckpointobjlist.c
create mode 100644 src/libvirt-domain-checkpoint.c
create mode 100644 tests/domaincheckpointxml2xmlin/empty.xml
create mode 100644 tests/domaincheckpointxml2xmlin/sample.xml
create mode 100644 tests/domaincheckpointxml2xmlin/size.xml
create mode 100644 tests/domaincheckpointxml2xmlout/empty.xml
create mode 100644 tests/domaincheckpointxml2xmlout/internal-active-invalid.xml
create mode 100644 tests/domaincheckpointxml2xmlout/internal-inactive-invalid.xml
create mode 100644 tests/domaincheckpointxml2xmlout/redefine.xml
create mode 100644 tests/domaincheckpointxml2xmlout/sample.xml
create mode 100644 tests/domaincheckpointxml2xmlout/size.xml
create mode 100644 tests/domaincheckpointxml2xmltest.c
create mode 100644 tools/virsh-checkpoint.c
[libvirt] [PATCH v8.5 00/13] Checkpoint APIs (incremental backup saga)
Posted by Eric Blake 4 years, 10 months ago
This is a subset of v8 of incremental backup, focusing more on just
the checkpoint manipulation code (as this had fewer review comments
that still needed addressing). I think there is enough here that even
if this lands in 5.5 while the backup APIs slide into 5.6 that we'd
still have a reasonably usable set of APIs.

I probably still need to double-check that creating checkpoints while
an external snapshot exists gives a sane error, and that creating an
external snapshot while checkoints exist give a sane error (in both
cases, with plans to relax that error later once we finish our
design); that can be done as a patch on top of these or if I have to
respin this part of the series once more before 5.5.

I do plan on tagging a v9 label of the full backup series, but that
will be in a separate thread built on top of this one (hence naming
this one v8.5).

Since v8:
- Completely drop the virDomainHasCurrentCheckpoint API (you get the
same effect by calling virDomainCheckpointCurrent)
- Defer the virDomainCheckpointHasMetadata API for a later day (if
we ever want it); for now, all checkpoints require libvirt metadta
- Expand the code to implement Checkpoint APIs for the test driver
- rebase to master
- Defer the Backup API work to a later series
- Split out the handling of VIR_DOMAIN_CHECKPOINT_XML_SIZE into its
own patch (that one is probably the most likely to need a respin, or
even deferring it post-5.5 as adding flag support is different than
adding new API)

001/13:[----] [--] 'backup: Document new XML for checkpoints'
002/13:[0121] [FC] 'backup: Introduce virDomainCheckpoint APIs'
003/13:[0004] [FC] 'backup: Document nuances between different state capture APIs'
004/13:[0127] [FC] 'backup: Parse and output checkpoint XML'
005/13:[0111] [FC] 'backup: Allow for lists of checkpoint objects'
006/13:[----] [--] 'backup: Add new domain:checkpoint access control'
007/13:[down] 'backup: Implement checkpoint APIs for remote driver'
008/13:[0065] [FC] 'backup: Implement virsh support for checkpoints'
009/13:[down] 'snapshot: Refactor test to utilize virDomainMoment more'
010/13:[down] 'backup: test: Implement metadata tracking for checkpoint APIs'
011/13:[0184] [FC] 'backup: qemu: Implement metadata tracking for checkpoint APIs'
012/13:[0016] [FC] 'backup: Wire up qemu checkpoint commands over QMP'
013/13:[down] 'backup: qemu: Implement VIR_DOMAIN_CHECKPOINT_XML_SIZE flag'


Eric Blake (13):
  backup: Document new XML for checkpoints
  backup: Introduce virDomainCheckpoint APIs
  backup: Document nuances between different state capture APIs
  backup: Parse and output checkpoint XML
  backup: Allow for lists of checkpoint objects
  backup: Add new domain:checkpoint access control
  backup: Implement checkpoint APIs for remote driver
  backup: Implement virsh support for checkpoints
  snapshot: Refactor test to utilize virDomainMoment more
  backup: test: Implement metadata tracking for checkpoint APIs
  backup: qemu: Implement metadata tracking for checkpoint APIs
  backup: Wire up qemu checkpoint commands over QMP
  backup: qemu: Implement VIR_DOMAIN_CHECKPOINT_XML_SIZE flag

 include/libvirt/libvirt-domain-checkpoint.h   |  149 ++
 include/libvirt/libvirt-domain.h              |    6 +
 include/libvirt/libvirt.h                     |    5 +-
 src/access/viraccessperm.h                    |    6 +
 src/conf/checkpoint_conf.h                    |  101 ++
 src/conf/domain_conf.h                        |    2 +
 src/conf/virconftypes.h                       |    9 +
 src/conf/virdomaincheckpointobjlist.h         |   66 +
 src/conf/virdomainmomentobjlist.h             |    5 +-
 src/conf/virdomainobjlist.h                   |    7 +-
 src/driver-hypervisor.h                       |   48 +
 src/qemu/qemu_block.h                         |    3 +
 src/qemu/qemu_conf.h                          |    2 +
 src/qemu/qemu_domain.h                        |   15 +
 src/qemu/qemu_monitor.h                       |    4 +
 src/qemu/qemu_monitor_json.h                  |    3 +
 tools/virsh-checkpoint.h                      |   26 +
 tools/virsh-completer.h                       |    4 +
 tools/virsh-util.h                            |    3 +
 tools/virsh.h                                 |    1 +
 docs/Makefile.am                              |    3 +
 docs/apibuild.py                              |    2 +
 docs/docs.html.in                             |    9 +-
 docs/domainstatecapture.html.in               |  315 ++++
 docs/format.html.in                           |    1 +
 docs/formatcheckpoint.html.in                 |  204 +++
 docs/formatsnapshot.html.in                   |    2 +
 docs/index.html.in                            |    3 +-
 docs/schemas/domaincheckpoint.rng             |   87 ++
 libvirt.spec.in                               |    2 +
 mingw-libvirt.spec.in                         |    4 +
 po/POTFILES                                   |    3 +
 src/Makefile.am                               |    2 +
 src/access/viraccessperm.c                    |    3 +-
 src/conf/Makefile.inc.am                      |    4 +
 src/conf/checkpoint_conf.c                    |  662 ++++++++
 src/conf/domain_conf.c                        |    6 +
 src/conf/virdomaincheckpointobjlist.c         |  219 +++
 src/conf/virdomainmomentobjlist.c             |    2 +-
 src/conf/virdomainobjlist.c                   |   11 +
 src/libvirt-domain-checkpoint.c               |  670 ++++++++
 src/libvirt-domain.c                          |   18 +-
 src/libvirt_private.syms                      |   26 +
 src/libvirt_public.syms                       |   25 +-
 src/qemu/qemu_block.c                         |   12 +
 src/qemu/qemu_conf.c                          |    5 +
 src/qemu/qemu_domain.c                        |  183 +++
 src/qemu/qemu_driver.c                        |  868 +++++++++++
 src/qemu/qemu_monitor.c                       |   11 +
 src/qemu/qemu_monitor_json.c                  |   76 +
 src/remote/remote_daemon_dispatch.c           |   20 +
 src/remote/remote_driver.c                    |   26 +-
 src/remote/remote_protocol.x                  |  155 +-
 src/remote_protocol-structs                   |   85 ++
 src/rpc/gendispatch.pl                        |   32 +-
 src/test/test_driver.c                        |  461 +++++-
 tests/Makefile.am                             |   11 +-
 tests/domaincheckpointxml2xmlin/empty.xml     |    1 +
 tests/domaincheckpointxml2xmlin/sample.xml    |    7 +
 tests/domaincheckpointxml2xmlin/size.xml      |    4 +
 tests/domaincheckpointxml2xmlout/empty.xml    |    7 +
 .../internal-active-invalid.xml               |   53 +
 .../internal-inactive-invalid.xml             |   53 +
 tests/domaincheckpointxml2xmlout/redefine.xml |   63 +
 tests/domaincheckpointxml2xmlout/sample.xml   |   12 +
 tests/domaincheckpointxml2xmlout/size.xml     |   11 +
 tests/domaincheckpointxml2xmltest.c           |  223 +++
 tests/virschematest.c                         |    2 +
 tools/Makefile.am                             |    1 +
 tools/virsh-checkpoint.c                      | 1342 +++++++++++++++++
 tools/virsh-completer.c                       |   51 +
 tools/virsh-domain-monitor.c                  |   23 +
 tools/virsh-domain.c                          |    9 +
 tools/virsh-util.c                            |   11 +
 tools/virsh.c                                 |    2 +
 tools/virsh.pod                               |  238 ++-
 76 files changed, 6745 insertions(+), 61 deletions(-)
 create mode 100644 include/libvirt/libvirt-domain-checkpoint.h
 create mode 100644 src/conf/checkpoint_conf.h
 create mode 100644 src/conf/virdomaincheckpointobjlist.h
 create mode 100644 tools/virsh-checkpoint.h
 create mode 100644 docs/domainstatecapture.html.in
 create mode 100644 docs/formatcheckpoint.html.in
 create mode 100644 docs/schemas/domaincheckpoint.rng
 create mode 100644 src/conf/checkpoint_conf.c
 create mode 100644 src/conf/virdomaincheckpointobjlist.c
 create mode 100644 src/libvirt-domain-checkpoint.c
 create mode 100644 tests/domaincheckpointxml2xmlin/empty.xml
 create mode 100644 tests/domaincheckpointxml2xmlin/sample.xml
 create mode 100644 tests/domaincheckpointxml2xmlin/size.xml
 create mode 100644 tests/domaincheckpointxml2xmlout/empty.xml
 create mode 100644 tests/domaincheckpointxml2xmlout/internal-active-invalid.xml
 create mode 100644 tests/domaincheckpointxml2xmlout/internal-inactive-invalid.xml
 create mode 100644 tests/domaincheckpointxml2xmlout/redefine.xml
 create mode 100644 tests/domaincheckpointxml2xmlout/sample.xml
 create mode 100644 tests/domaincheckpointxml2xmlout/size.xml
 create mode 100644 tests/domaincheckpointxml2xmltest.c
 create mode 100644 tools/virsh-checkpoint.c

-- 
2.20.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list