2010/3/30 Jiri Denemark <jdenemar(a)redhat.com>:
Hi.
...
> /* NOTE: struct _virDomainSnapshot is a private structure, ala
> * struct _virDomain.
> */
> typedef struct _virDomainSnapshot virDomainSnapshot;
>
> /* Take a snapshot of the current VM state. Throws an error if
> * the VM is not currently running */
> virDomainSnapshotPtr virDomainSnapshotCreateXML(virDomainPtr domain,
> const char *xmlDesc,
> unsigned int flags);
This is probably a leftover from previous versions, but... why do we restrict
this API only for running VMs?
Yep, if a domain it not running you'll just get a disk snapshot
without a memory snapshot.
...
> Possible issues:
> 1) I don't see a way to support "managed" save/restore and
snapshotting with
> this API. I think we'll have to have a separate API for managed save/restore.
> 2) What is the semantic for deleting snapshots from a running domain?
> Virtualbox seems to not allow you to manipulate snapshots while the domain is
> running. Qemu does allow this, but it's currently unclear what the exact
> semantics are. VMware seems to allow manipulation of snapshots while the
> domain is running.
> 3) Do we need a snapshot UUID? Virtualbox allows you to have multiple snapshots
> with the same name, differentiated by UUID. Confusingly, they also have a
> "FindByName" method that returns the first depth-first search snapshot that
matches
> a given name. For qemu, if you specify the same name twice it overwrites the
previous
> one with the new one. I don't know what ESX does here.
Libvirt uses/generates UUIDs for almost everything (networks, vms, ...) so it
might be more consistent to have UUID in snapshot as well.
ESX snapshots don't have a UUID, and there is no easy way to store an
UUID-to-snapshot mapping.
Matthias