[libvirt] [PATCH v6 7/9] backup: Introduce virDomainCheckpoint APIs

Eric Blake eblake at redhat.com
Tue Mar 26 17:49:43 UTC 2019


On 3/26/19 11:55 AM, Daniel P. Berrangé wrote:
> On Tue, Mar 26, 2019 at 01:13:51AM -0500, Eric Blake wrote:
>> Introduce a bunch of new public APIs related to backup checkpoints.
>> Checkpoints are modeled heavily after virDomainSnapshotPtr (both
>> represent a point in time of the guest), although a snapshot exists
>> with the intent of rolling back to that state, while a checkpoint
>> exists to make it possible to create an incremental backup at a later
>> time.
>>
>> The following map shows the API relations to snapshots, with new APIs
>> on the right:
>>
>> Operate on a domain object to create/redefine a child:
>> virDomainSnapshotCreateXML          virDomainCheckpointCreateXML
>>
>> Operate on a child object for lifetime management:
>> virDomainSnapshotDelete             virDomainCheckpointDelete
>> virDomainSnapshotFree               virDomainCheckpointFree
>> virDomainSnapshotRef                virDomainCheckpointRef
>>
>> Operate on a child object to learn more about it:
>> virDomainSnapshotGetXMLDesc         virDomainCheckpointGetXMLDesc
>> virDomainSnapshotGetConnect         virDomainCheckpointGetConnect
>> virDomainSnapshotGetDomain          virDomainCheckpointGetDomain
>> virDomainSnapshotGetName            virDomainCheckpiontGetName
>> virDomainSnapshotGetParent          virDomainCheckpiontGetParent
>> virDomainSnapshotHasMetadata        virDomainCheckpointHasMetadata
>> virDomainSnapshotIsCurrent          virDomainCheckpointIsCurrent
>>
>> Operate on a domain object to list all children:
>> virDomainSnapshotNum                (no counterpart, this is the old
>> virDomainSnapshotListNames           racy interface)
>> virDomainSnapshotListAllSnapshots   virDomainListCheckpoints
> 
> The snapshot API was actually  virDomainListAllSnapshots.
> 
> For naming consistency I'd prefer to see "All" in the name of the
> name API too eg virDomainListAllCheckpoints

Can do. That one's quite mechanical to fix.

> 
>>
>> Operate on a child object to list descendents:
>> virDomainSnapshotNumChildren        (no counterpart, this is the old
>> virDomainSnapshotListChildrenNames   racy interface)
>> virDomainSnapshotListAllChildren    virDomainCheckpointListChildren
> 
> and virDomainCheckpointListAllChildren here too

Yep, consistency in both places makes sense.

> 
>> Operate on a domain to locate a particular child:
>> virDomainSnapshotLookupByName       virDomainCheckpointLookupByName
>> virDomainHasCurrentSnapshot         virDomainHasCurrentSnapshot
> 
> Presumably the second should be virDomainhasCurrentCheckpoint

Correct, will fix my commit message.

> 
>> virDomainSnapshotCurrent            virDomainCheckpointCurrent
>>
>> Operate on a snapshot to roll back to earlier state:
>> virDomainSnapshotRevert             (no counterpart, instead checkpoints
>>                                      are used in incremental backups via
>> 				     XML to virDomainBackupBegin)
>>
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>> ---

>> +++ b/include/libvirt/libvirt-domain.h
>> @@ -1774,6 +1774,9 @@ typedef enum {
>>      VIR_DOMAIN_UNDEFINE_NVRAM              = (1 << 2), /* Also remove any
>>                                                            nvram file */
>>      VIR_DOMAIN_UNDEFINE_KEEP_NVRAM         = (1 << 3), /* Keep nvram file */
>> +    VIR_DOMAIN_UNDEFINE_CHECKPOINTS_METADATA= (1 << 4),/* If last use of domain,
>> +                                                          then also remove any
>> +                                                          checkpoint metadata */
> 
> Whitespace missing before the "=" and between ",/"

I'm not sure how best to fit things; then again, it looks like we don't
always try to hit 80 columns in the public headers, so I don't mind
adding the space.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190326/13aeb8da/attachment-0001.sig>


More information about the libvir-list mailing list