[libvirt] [PATCH v4 0/8] bulk snapshot list/redefine (incremental backup saga)

Eric Blake eblake at redhat.com
Tue Mar 12 02:38:31 UTC 2019


While looking at my work on incremental backups, Nir raised a good
point: if we want to recreate a set of known checkpoints on one
machine that will be taking over a domain from another machine,
my initial proposal required making multiple API calls to list the
XML for each checkpoint on the source, and then more API calls to
redefine each checkpoint on the destination; it also had the drawback
that the list has to be presented in topological order (the API won't
let you define a child checkpoint if the parent is not defined first).
He asked if I could instead add bulk APIs, for getting the XML for
all checkpoints at once, and then for redefining all checkpoints at
once.

Since my checkpoint code borrows heavily from concepts in the snapshot
code, I chose to tackle the problem by starting with this series, which
does the same thing for snapshots as what I plan to do for checkpoints.
That is, since this patch series adds 2 new APIs, the checkpoint series
will do likewise with very similar code.

I'm also toying with the idea of followup patches that store all
snapshots alongside the persistent <domain> XML in a single file,
rather than in one snapshot per <domainsnapshot> file (we'd still
support reading from the old method at libvirtd startup, but would
not need to output in that manner any more).

Based-on: <20190308060512.17733-1-eblake at redhat.com>
[0/5 snapshots: topological sorting]

Changes from v3:
- introduce 2 new API instead of flags to 2 existing API [Jan]
- rebase on top of minor changes that already landed in the
non-controversial first half of the v3 series [John]

git backport-diff gets confused by patch renames, but this is quite
obviously more or less a rewrite:

001/8:[down] 'snapshot: Add new API for bulk dumpxml/redefine'
002/8:[down] 'snapshot: Support topological virDomainSnapshotForEach()'
003/8:[down] 'snapshot: Tweaks to support new bulk dumpxml/import API'
004/8:[down] 'remote: Wire up snapshot bulk dumpxml/import'
005/8:[down] 'virsh: Expose bulk snapshot dumpxml/import'
006/8:[0087] [FC] 'test: Implement bulk snapshot operations'
007/8:[0040] [FC] 'qemu: Factor out qemuDomainSnapshotValidate() helper'
008/8:[0152] [FC] 'qemu: Implement bulk snapshot operations'

Eric Blake (8):
  snapshot: Add new API for bulk dumpxml/redefine
  snapshot: Support topological virDomainSnapshotForEach()
  snapshot: Tweaks to support new bulk dumpxml/import API
  remote: Wire up snapshot bulk dumpxml/import
  virsh: Expose bulk snapshot dumpxml/import
  test: Implement bulk snapshot operations
  qemu: Factor out qemuDomainSnapshotValidate() helper
  qemu: Implement bulk snapshot operations

 include/libvirt/libvirt-domain-snapshot.h |  16 +-
 src/conf/snapshot_conf.h                  |   1 +
 src/driver-hypervisor.h                   |  13 +-
 src/conf/snapshot_conf.c                  |  34 ++--
 src/libvirt-domain-snapshot.c             | 122 ++++++++++-
 src/libvirt_public.syms                   |   2 +
 src/qemu/qemu_domain.c                    |   2 +-
 src/qemu/qemu_driver.c                    | 236 +++++++++++++++++-----
 src/remote/remote_driver.c                |   6 +-
 src/remote/remote_protocol.x              |  38 +++-
 src/remote_protocol-structs               |  17 ++
 src/test/test_driver.c                    |  62 +++++-
 src/vz/vz_driver.c                        |   3 +-
 tools/virsh-snapshot.c                    | 111 ++++++++--
 tools/virsh.pod                           |  15 +-
 15 files changed, 584 insertions(+), 94 deletions(-)

-- 
2.20.1




More information about the libvir-list mailing list