[libvirt] [PATCH v8 00/21] Incremental backups

Eric Blake posted 21 patches 4 years, 11 months ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190417140921.11964-1-eblake@redhat.com
include/libvirt/libvirt-domain-checkpoint.h   |  161 ++
include/libvirt/libvirt-domain-snapshot.h     |    8 +-
include/libvirt/libvirt-domain.h              |   47 +-
include/libvirt/libvirt.h                     |    5 +-
src/access/viraccessperm.h                    |    6 +
src/conf/backup_conf.h                        |   97 +
src/conf/checkpoint_conf.h                    |  103 ++
src/conf/domain_conf.h                        |    3 +
src/conf/virconftypes.h                       |   12 +
src/conf/virdomaincheckpointobjlist.h         |   74 +
src/conf/virdomainmomentobjlist.h             |    7 +-
src/conf/virdomainobjlist.h                   |    7 +-
src/driver-hypervisor.h                       |   79 +
src/qemu/qemu_block.h                         |    3 +
src/qemu/qemu_blockjob.h                      |    1 +
src/qemu/qemu_capabilities.h                  |    2 +
src/qemu/qemu_conf.h                          |    2 +
src/qemu/qemu_domain.h                        |   19 +
src/qemu/qemu_monitor.h                       |   27 +-
src/qemu/qemu_monitor_json.h                  |   22 +-
tools/virsh-checkpoint.h                      |   29 +
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                             |   10 +-
docs/domainstatecapture.html.in               |  315 ++++
docs/format.html.in                           |    2 +
docs/formatbackup.html.in                     |  184 ++
docs/formatcheckpoint.html.in                 |  204 +++
docs/formatsnapshot.html.in                   |    2 +
docs/index.html.in                            |    4 +-
docs/schemas/domainbackup.rng                 |  219 +++
docs/schemas/domaincheckpoint.rng             |   87 +
examples/object-events/event-test.c           |    3 +
libvirt.spec.in                               |    3 +
mingw-libvirt.spec.in                         |    6 +
po/POTFILES                                   |    3 +
src/Makefile.am                               |    2 +
src/access/viraccessperm.c                    |    3 +-
src/conf/Makefile.inc.am                      |    6 +
src/conf/backup_conf.c                        |  538 ++++++
src/conf/checkpoint_conf.c                    |  636 +++++++
src/conf/domain_conf.c                        |   22 +-
src/conf/snapshot_conf.c                      |    3 +-
src/conf/virdomaincheckpointobjlist.c         |  223 +++
src/conf/virdomainmomentobjlist.c             |   40 +-
src/conf/virdomainobjlist.c                   |   11 +
src/conf/virdomainsnapshotobjlist.c           |    2 +-
src/libvirt-domain-checkpoint.c               |  750 ++++++++
src/libvirt-domain-snapshot.c                 |   89 +
src/libvirt-domain.c                          |  237 ++-
src/libvirt_private.syms                      |   32 +
src/libvirt_public.syms                       |   24 +
src/qemu/qemu_block.c                         |   12 +
src/qemu/qemu_capabilities.c                  |    4 +
src/qemu/qemu_conf.c                          |    5 +
src/qemu/qemu_domain.c                        |  221 ++-
src/qemu/qemu_driver.c                        | 1577 +++++++++++++++++
src/qemu/qemu_migration.c                     |    9 +-
src/qemu/qemu_monitor.c                       |   72 +-
src/qemu/qemu_monitor_json.c                  |  222 ++-
src/qemu/qemu_process.c                       |    9 +
src/remote/remote_daemon_dispatch.c           |   20 +
src/remote/remote_driver.c                    |   32 +-
src/remote/remote_protocol.x                  |  258 ++-
src/remote_protocol-structs                   |  139 ++
src/rpc/gendispatch.pl                        |   32 +-
tests/Makefile.am                             |   13 +-
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/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/qemublocktest.c                         |    3 +-
.../caps_4.0.0.riscv32.xml                    |    2 +
.../caps_4.0.0.riscv64.xml                    |    2 +
.../caps_4.0.0.x86_64.xml                     |    2 +
tests/qemumonitorjsontest.c                   |   32 +-
tests/virschematest.c                         |    4 +
tests/virstoragetest.c                        |    2 +-
tools/Makefile.am                             |    1 +
tools/virsh-checkpoint.c                      | 1370 ++++++++++++++
tools/virsh-completer.c                       |   51 +
tools/virsh-domain-monitor.c                  |   23 +
tools/virsh-domain.c                          |  268 ++-
tools/virsh-snapshot.c                        |   37 +-
tools/virsh-util.c                            |   11 +
tools/virsh.c                                 |    2 +
tools/virsh.pod                               |  302 +++-
102 files changed, 9502 insertions(+), 100 deletions(-)
create mode 100644 include/libvirt/libvirt-domain-checkpoint.h
create mode 100644 src/conf/backup_conf.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/formatbackup.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/conf/backup_conf.c
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/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/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 00/21] Incremental backups
Posted by Eric Blake 4 years, 11 months ago
The API is fairly stable, but there are still probably code cleanups
worth adding to the qemu driver implementation. I've also seen a
desire on the list to support all APIs in the test driver, so I'll
try and whip that together for my next round of patches.

If we are confident that the API is worth having in 5.3 (especially
since the earlier part of this series already has positive reviews),
then it's probably worth committing that part of the series now even
while I still address review comments on the later patches.

I've pushed a tag backup-v8 to both my libvirt.git and
libvirt-python.git repos to match:
https://repo.or.cz/libvirt/ericb.git/shortlog/refs/tags/backup-v8
https://repo.or.cz/libvirt-python/ericb.git/shortlog/refs/tags/backup-v8

Here's hoping we're happy enough with the API, including the fact that
rudimentary operation of pull mode backups work with qemu 4.0-rc1, for
this to make it into the 5.2 release.

Notable diffs from v7:
- address several review comments (although I didn't get to every
comment later in the series)
- actually support job id of 0 (it was documented but not working in v7)
- add support for Unix socket pull mode backups
- improve checkpoint XML handling (more tests, separate postparse actions
out from initial parse)
- rebase to master

001/21:[0044] [FC] 'backup: Document new XML for checkpoints'
002/21:[----] [--] 'backup: Document new XML for backups'
003/21:[0006] [FC] 'backup: Introduce virDomainCheckpoint APIs'
004/21:[0002] [FC] 'backup: Introduce virDomainBackup APIs'
005/21:[----] [--] 'backup: Document nuances between different state capture APIs'
006/21:[0304] [FC] 'backup: Parse and output checkpoint XML'
007/21:[0007] [FC] 'backup: Allow for lists of checkpoint objects'
008/21:[0004] [FC] 'backup: Add new domain:checkpoint access control'
009/21:[0043] [FC] 'backup: Implement backup APIs for remote driver'
010/21:[down] 'conf: Add parameter to virDomainDiskSourceFormat'
011/21:[0019] [FC] 'backup: Parse and output backup XML'
012/21:[0006] [FC] 'backup: Implement virsh support for checkpoints'
013/21:[0002] [FC] 'backup: Implement virsh support for backup'
014/21:[down] 'backup: Prepare for Unix sockets in QMP nbd-server-start'
015/21:[0008] [FC] 'backup: Add new qemu monitor interactions'
016/21:[0022] [FC] 'backup: qemu: Implement metadata tracking for checkpoint APIs'
017/21:[0004] [FC] 'backup: Wire up qemu checkpoint commands over QMP'
018/21:[0019] [FC] 'backup: qemu: Implement framework for backup job APIs'
019/21:[0042] [FC] 'backup: Wire up qemu full pull backup commands over QMP'
020/21:[----] [-C] 'backup: qemu: Wire up qemu full push backup commands over QMP'
021/21:[0003] [FC] 'backup: implement qemu incremental pull backup'

Eric Blake (21):
  backup: Document new XML for checkpoints
  backup: Document new XML for backups
  backup: Introduce virDomainCheckpoint APIs
  backup: Introduce virDomainBackup 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 backup APIs for remote driver
  conf: Add parameter to virDomainDiskSourceFormat
  backup: Parse and output backup XML
  backup: Implement virsh support for checkpoints
  backup: Implement virsh support for backup
  backup: Prepare for Unix sockets in QMP nbd-server-start
  backup: Add new qemu monitor interactions
  backup: qemu: Implement metadata tracking for checkpoint APIs
  backup: Wire up qemu checkpoint commands over QMP
  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-checkpoint.h   |  161 ++
 include/libvirt/libvirt-domain-snapshot.h     |    8 +-
 include/libvirt/libvirt-domain.h              |   47 +-
 include/libvirt/libvirt.h                     |    5 +-
 src/access/viraccessperm.h                    |    6 +
 src/conf/backup_conf.h                        |   97 +
 src/conf/checkpoint_conf.h                    |  103 ++
 src/conf/domain_conf.h                        |    3 +
 src/conf/virconftypes.h                       |   12 +
 src/conf/virdomaincheckpointobjlist.h         |   74 +
 src/conf/virdomainmomentobjlist.h             |    7 +-
 src/conf/virdomainobjlist.h                   |    7 +-
 src/driver-hypervisor.h                       |   79 +
 src/qemu/qemu_block.h                         |    3 +
 src/qemu/qemu_blockjob.h                      |    1 +
 src/qemu/qemu_capabilities.h                  |    2 +
 src/qemu/qemu_conf.h                          |    2 +
 src/qemu/qemu_domain.h                        |   19 +
 src/qemu/qemu_monitor.h                       |   27 +-
 src/qemu/qemu_monitor_json.h                  |   22 +-
 tools/virsh-checkpoint.h                      |   29 +
 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                             |   10 +-
 docs/domainstatecapture.html.in               |  315 ++++
 docs/format.html.in                           |    2 +
 docs/formatbackup.html.in                     |  184 ++
 docs/formatcheckpoint.html.in                 |  204 +++
 docs/formatsnapshot.html.in                   |    2 +
 docs/index.html.in                            |    4 +-
 docs/schemas/domainbackup.rng                 |  219 +++
 docs/schemas/domaincheckpoint.rng             |   87 +
 examples/object-events/event-test.c           |    3 +
 libvirt.spec.in                               |    3 +
 mingw-libvirt.spec.in                         |    6 +
 po/POTFILES                                   |    3 +
 src/Makefile.am                               |    2 +
 src/access/viraccessperm.c                    |    3 +-
 src/conf/Makefile.inc.am                      |    6 +
 src/conf/backup_conf.c                        |  538 ++++++
 src/conf/checkpoint_conf.c                    |  636 +++++++
 src/conf/domain_conf.c                        |   22 +-
 src/conf/snapshot_conf.c                      |    3 +-
 src/conf/virdomaincheckpointobjlist.c         |  223 +++
 src/conf/virdomainmomentobjlist.c             |   40 +-
 src/conf/virdomainobjlist.c                   |   11 +
 src/conf/virdomainsnapshotobjlist.c           |    2 +-
 src/libvirt-domain-checkpoint.c               |  750 ++++++++
 src/libvirt-domain-snapshot.c                 |   89 +
 src/libvirt-domain.c                          |  237 ++-
 src/libvirt_private.syms                      |   32 +
 src/libvirt_public.syms                       |   24 +
 src/qemu/qemu_block.c                         |   12 +
 src/qemu/qemu_capabilities.c                  |    4 +
 src/qemu/qemu_conf.c                          |    5 +
 src/qemu/qemu_domain.c                        |  221 ++-
 src/qemu/qemu_driver.c                        | 1577 +++++++++++++++++
 src/qemu/qemu_migration.c                     |    9 +-
 src/qemu/qemu_monitor.c                       |   72 +-
 src/qemu/qemu_monitor_json.c                  |  222 ++-
 src/qemu/qemu_process.c                       |    9 +
 src/remote/remote_daemon_dispatch.c           |   20 +
 src/remote/remote_driver.c                    |   32 +-
 src/remote/remote_protocol.x                  |  258 ++-
 src/remote_protocol-structs                   |  139 ++
 src/rpc/gendispatch.pl                        |   32 +-
 tests/Makefile.am                             |   13 +-
 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/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/qemublocktest.c                         |    3 +-
 .../caps_4.0.0.riscv32.xml                    |    2 +
 .../caps_4.0.0.riscv64.xml                    |    2 +
 .../caps_4.0.0.x86_64.xml                     |    2 +
 tests/qemumonitorjsontest.c                   |   32 +-
 tests/virschematest.c                         |    4 +
 tests/virstoragetest.c                        |    2 +-
 tools/Makefile.am                             |    1 +
 tools/virsh-checkpoint.c                      | 1370 ++++++++++++++
 tools/virsh-completer.c                       |   51 +
 tools/virsh-domain-monitor.c                  |   23 +
 tools/virsh-domain.c                          |  268 ++-
 tools/virsh-snapshot.c                        |   37 +-
 tools/virsh-util.c                            |   11 +
 tools/virsh.c                                 |    2 +
 tools/virsh.pod                               |  302 +++-
 102 files changed, 9502 insertions(+), 100 deletions(-)
 create mode 100644 include/libvirt/libvirt-domain-checkpoint.h
 create mode 100644 src/conf/backup_conf.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/formatbackup.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/conf/backup_conf.c
 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/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/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