[libvirt] [PATCHv2 14/26] snapshot: prevent stranding snapshot data on domain destruction

Eric Blake eblake at redhat.com
Tue Aug 16 20:47:25 UTC 2011


On 08/15/2011 05:33 PM, Eric Blake wrote:
> Just as leaving managed save metadata behind can cause problems
> when creating a new domain that happens to collide with the name
> of the just-deleted domain, the same is true of leaving any
> snapshot metadata behind.  For safety sake, extend the semantic
> change of commit b26a9fa9 to also cover snapshot metadata as a
> reason to reject losing the last reference to a domain (undefine
> on an inactive, or shutdown/destroy on a transient).  The caller
> must first take care of snapshots, possible via the existing
> virDomainSnapshotDelete.
>

> +++ b/src/qemu/qemu_driver.c
> @@ -1472,6 +1472,7 @@ static int qemuDomainShutdown(virDomainPtr dom) {
>       virDomainObjPtr vm;
>       int ret = -1;
>       qemuDomainObjPrivatePtr priv;
> +    int nsnapshots;
>
>       qemuDriverLock(driver);
>       vm = virDomainFindByUUID(&driver->domains, dom->uuid);
> @@ -1485,6 +1486,14 @@ static int qemuDomainShutdown(virDomainPtr dom) {
>           goto cleanup;
>       }
>
> +    if (!vm->persistent&&
> +        (nsnapshots = virDomainSnapshotObjListNum(&vm->snapshots))) {

I had tested this, then rebased the series to add a parameter to 
virDomainSnapshotObjListNum in an earlier patch, which breaks 
compilation of this patch in the order presented in the series.  Fix by 
adding a trailing ', 0' argument on the three lines where compilation fails.

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




More information about the libvir-list mailing list