[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