[libvirt] [PATCH v2 0/9] Incremental Backup API additions

Eric Blake eblake at redhat.com
Fri Oct 12 05:10:02 UTC 2018


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




More information about the libvir-list mailing list