
On Fri, May 25, 2018 at 10:26:12 -0500, Eric Blake wrote:
On 05/17/2018 05:43 PM, Eric Blake wrote:
Here's my updated counterproposal for a backup API.
In comparison to v2 posted by Nikolay: https://www.redhat.com/archives/libvir-list/2018-April/msg00115.html - changed terminology a bit: Nikolay's "BlockSnapshot" is now called a "Checkpoint", and "BlockExportStart/Stop" is now "BackupBegin/End" - flesh out more API descriptions - better documentation of proposed XML, for both checkpoints and backup
Barring any major issues turned up during review, I've already starting to code this into libvirt with a goal of getting an implementation ready for review this month.
// Many additional functions copying heavily from virDomainSnapshot*:
virDomainCheckpointList(virDomainPtr domain, virDomainCheckpointPtr **checkpoints, unsigned int flags);
int virDomainCheckpointListChildren(virDomainCheckpointPtr checkpoint, virDomainCheckpointPtr **children, unsigned int flags);
Notably, none of the older racy list functions, like virDomainSnapshotNum, virDomainSnapshotNumChildren, or virDomainSnapshotListChildrenNames; also, for now, there is no revert support like virDomainSnapshotRevert.
I'm finding it easier to understand if I name these:
virDomainListCheckpoints() (find checkpoints relative to a domain) virDomainCheckpointListChildren() (find children relative to a checkpoint)
If you are going to name them "checkpoints" here we should first rename "snapshots with memory" in our docs since we refer to them as checkpoints. We refer to disk-only snapshots as snapshots and wanted to emphasize the difference.
The counterpart Snapshot API used virDomainListAllSnapshots(); the term 'All' was present because it was added after the initial racy virDomainSnapshotNum(), but as we are avoiding the racy API here we can skip it from the beginning.
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org