[libvirt] [PATCH 1/2] snapshot: add REVERT_FORCE to API

Eric Blake eblake at redhat.com
Tue Oct 4 19:39:44 UTC 2011


On 10/04/2011 01:24 PM, Laine Stump wrote:
>>
>> - if (virDomainRevertToSnapshot(snapshot, flags)< 0)
>> + result = virDomainRevertToSnapshot(snapshot, flags);
>> + if (result< 0&& force&&
>> + last_error->code == VIR_ERR_SNAPSHOT_REVERT_RISKY) {
>> + flags |= VIR_DOMAIN_SNAPSHOT_REVERT_FORCE;
>
> Are you not adding the FORCE flag the first time to allow for better
> interoperability with older libvirtd?

Exactly.  For example, libvirt 0.9.6 does not understand FORCE (and 
using it would error out with unrecognized flag bit), but just happens 
to revert to a snapshot created by 0.9.4 on the first call with flags == 
0.  Libvirt 0.9.7, in the same situation, will error out with the new 
error value when flags == 0, but with the new error, so that you know 
you can safely add FORCE.  One other consideration is that 0.9.6 
understands the new flag VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING, which 0.9.4 
did not understand, so blindly looking for the 'unknown flag bit' error 
is not unique enough to be the indication that we could remove the 
--force bit and retry, because that still won't resolve on an 0.9.4 
server.  My choice of --force handling thus seems to be the one most 
likely to work for 0.9.4, 0.9.6, and 0.9.7, so that the user can blindly 
type 'virsh snapshot-revert dom old-snapshot --force' and attempt the 
revert regardless of server version.

Conversely, I still wanted 'virsh snapshot-revert' _without_ --force 
will work in as many situations as the server supports, and that if a 
server rejects the operation because force is required, the error 
message will be specific enough to mention that.  This is a good thing, 
so that users don't have to blindly add '--force' and expose themselves 
to unnecessary risk; rather, they should only add --force after an 
explicit message says what force would solve, and deciding that the risk 
of forcing for that particular case is worth it.

> That's the only question I had. It all looks fine - ACK.

I'll wait for the 2/2 ack before applying this, then.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list