[libvirt] [PATCH v4 05/20] backup: Introduce virDomainCheckpointPtr

Eric Blake eblake at redhat.com
Mon Feb 25 16:23:49 UTC 2019


On 2/9/19 9:48 AM, John Ferlan wrote:
> 
> 
> On 2/6/19 2:18 PM, Eric Blake wrote:
>> Prepare for introducing a bunch of new public APIs related to
>> backup checkpoints by first introducing a new internal type
>> and errors associated with that type.  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.
>>
>> Signed-off-by: Eric Blake <eblake at redhat.com>
>>
>> ---
>> v2: fix copy-and-paste issue in virerror.c [John]
>> ---
>>  include/libvirt/virterror.h |  7 +++--
>>  src/util/virerror.c         | 12 ++++++-
>>  include/libvirt/libvirt.h   |  2 ++
>>  src/datatypes.h             | 31 ++++++++++++++++++-
>>  src/datatypes.c             | 62 ++++++++++++++++++++++++++++++++++++-
>>  src/libvirt_private.syms    |  2 ++
>>  6 files changed, 111 insertions(+), 5 deletions(-)
>>
> 
> Naturally something changed recently in datatypes.h... so you will have
> a merge conflict here.

Yeah, a long-running issue. v5 will be rebased yet again.

> 
>> diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h
>> index 3c19ff5e2e..acbf03d0ea 100644
>> --- a/include/libvirt/virterror.h
>> +++ b/include/libvirt/virterror.h
>> @@ -4,7 +4,7 @@
>>   * Description: Provides the interfaces of the libvirt library to handle
>>   *              errors raised while using the library.
>>   *
>> - * Copyright (C) 2006-2016 Red Hat, Inc.
>> + * Copyright (C) 2006-2019 Red Hat, Inc.
> 
> I'll let someone else complain about your emacs macro ;-)

>> --- a/include/libvirt/libvirt.h
>> +++ b/include/libvirt/libvirt.h
>> @@ -34,6 +34,8 @@ extern "C" {
>>  # include <libvirt/libvirt-common.h>
>>  # include <libvirt/libvirt-host.h>
>>  # include <libvirt/libvirt-domain.h>
>> +typedef struct _virDomainCheckpoint virDomainCheckpoint;
>> +typedef virDomainCheckpoint *virDomainCheckpointPtr;
> 
> This is a weird construct for this file...
> 
> I think this should be in a libvirt-domain-checkpoint.h type file which
> I see is generated a few patches later and these lines moved.  In the
> long run I guess as long as it's in a file it doesn't matter.

I'll add a comment here making it obvious that this is a temporary hack
to avoid even more invasive changes in this patch, and that it gets
cleaned up later.

>> +++ b/src/datatypes.h
>> @@ -1,7 +1,7 @@
>>  /*
>>   * datatypes.h: management of structs for public data types
>>   *
>> - * Copyright (C) 2006-2015 Red Hat, Inc.
>> + * Copyright (C) 2006-2018 Red Hat, Inc.
> 
> haha 2018 - I know when you last touched this ;-)

D'oh - my emacs macro may be nice, but it isn't consistent unless I
retouch the file. :-)


>> +/**
>> + * virGetDomainCheckpoint:
>> + * @domain: the domain to checkpoint
>> + * @name: pointer to the domain checkpoint name
>> + *
>> + * Allocates a new domain checkpoint object. When the object is no longer needed,
>> + * virObjectUnref() must be called in order to not leak data.
>> + *
>> + * Returns a pointer to the domain checkpoint object, or NULL on error.
>> + */
>> +virDomainCheckpointPtr
>> +virGetDomainCheckpoint(virDomainPtr domain, const char *name)
> 
> More recently we or I have been trying to enforce one line per argument
> for new code or changed methods.

Can do. Old habits die hard, but I can make the effort to avoid them in
favor of one-argument-per-line.

> 
>> +{
>> +    virDomainCheckpointPtr ret = NULL;
>> +
>> +    if (virDataTypesInitialize() < 0)
>> +        return NULL;
>> +
>> +    virCheckDomainGoto(domain, error);
>> +    virCheckNonNullArgGoto(name, error);
>> +
>> +    if (!(ret = virObjectNew(virDomainCheckpointClass)))
>> +        goto error;
> 
> Could return NULL too, but it is a copy of virGetDomainSnapshot
> 
> Reviewed-by: John Ferlan <jferlan at redhat.com>
> 

And as you've seen in my other recent patches, I've been cleaning up
some snapshot oddities; any cleanups I do there will also need to be
folded into v5 here.

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




More information about the libvir-list mailing list