On 11/01/2012 10:22 AM, Peter Krempa wrote:
Snapshots are external if they are "disk snapshots" or if
they have an
external memory image. Other possibilities are not supported (yet).
And given the discussion on 15/20, even though it might be technically
possible to mix internal and external disk images into a single
snapshot, we are going to forbid that mix for now (because it has
interesting ramifications on how to do a revert), so this approach looks
sane.
---
src/conf/snapshot_conf.c | 11 +++++++++++
src/conf/snapshot_conf.h | 2 ++
src/libvirt_private.syms | 1 +
3 files changed, 14 insertions(+)
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index 691950a..5d9df57 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -1023,3 +1023,14 @@ cleanup:
}
return ret;
}
+
+
+bool
+virDomainSnapshotIsExternal(virDomainSnapshotObjPtr snap)
+{
+ if (snap->def->state == VIR_DOMAIN_DISK_SNAPSHOT ||
+ snap->def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL)
+ return true;
+
+ return false;
+}
This isn't quite true. If the snapshot is offline, then
snap->def->state will be VIR_DOMAIN_SHUTOFF, not
VIR_DOMAIN_DISK_SNAPSHOT. If state is shutoff, you're going to have to
loop over the disks to see if any of them requested external.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org