[libvirt] [PATCH] blockcommit: document semantics of committing active layer

Eric Blake eblake at redhat.com
Mon May 19 15:11:42 UTC 2014


On 05/19/2014 01:58 AM, Peter Krempa wrote:

[Sorry for not putting RFC in the subject line]

>> +++ b/src/qemu/qemu_driver.c
>> @@ -15377,6 +15377,7 @@ qemuDomainBlockCommit(virDomainPtr dom,
>>      const char *top_parent = NULL;
>>      bool clean_access = false;
>>
>> +    /* XXX Add support for COMMIT_ACTIVE, COMMIT_DELETE */
>>      virCheckFlags(VIR_DOMAIN_BLOCK_COMMIT_SHALLOW, -1);
>>
>>      if (!(vm = qemuDomObjFromDomain(dom)))
>> @@ -15423,6 +15424,14 @@ qemuDomainBlockCommit(virDomainPtr dom,
>>                                                       &top_parent)))
>>          goto endjob;
>>
>> +    /* XXX Should we auto-pivot when COMMIT_ACTIVE is not specified? */
> 
> I think we should. But I agree in postponing it to later patch.
> 
>> +    if (topSource == &disk->src && !(flags & VIR_DOMAIN_BLOCK_COPY_ACTIVE)) {
> 
> As mentioned in the previous mail, this breaks build.
> 
> s/BLOCK_COPY/BLOCK_COMMIT/

Blah - serves me right for sending a patch at the end of my day. But I'm
glad you were able to see the intent.

> 
> Also shouldn't this hunk actually go in the patch that adds the active
> block commit feature? It seems a bit out of place here.

_This_ patch is fixing the qemu driver to not hang, by acknowledging
that we _don't_ support active block commit (the virCheckFlags() at the
beginning of the function fails if the new flag is specified, and this
check fails if the flag is not specified - which means you cannot do
active commits).  The next few patches (when I develop it into a full
series) will first be to add support for the new flag (fixing the first
XXX) and then to relax things to auto-pivot when the flag is not present
(fixing the second XXX).

> 
>> +        virReportError(VIR_ERR_INVALID_ARG,
>> +                       _("commit of '%s' active layer requires active flag"),
>> +                       disk->dst);
>> +        goto endjob;
>> +    }
>> +
>>      if (!topSource->backingStore) {
>>          virReportError(VIR_ERR_INVALID_ARG,
>>                         _("top '%s' in chain for '%s' has no backing file"),
>>
> 
> I think that this patch should also export this new flag in virsh as we
> usually do with API flag additions.

Yes, that's my next task before turning this from an RFC into an actual
patch series, even before the qemu implementation is done.

> 
> Additionally a change in virsh is missing again breaks the build process:

Yep, my fault for not actually compile-testing in my rush to get it out
before the weekend :)

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

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


More information about the libvir-list mailing list