On 03/16/2012 04:05 PM, Eric Blake wrote:
Taking an external snapshot of just one disk is atomic, without
having
to pause and resume the VM. This also paves the way for later patches
to interact with the new qemu 'transaction' monitor command.
The various scenarios when requesting atomic are:
online, 1 disk, old qemu - safe, allowed by this patch
online, more than 1 disk, old qemu - failure, this patch
offline snapshot - safe, once a future patch implements offline disk snapshot
online, 1 or more disks, new qemu - safe, once future patch uses transaction
This is incomplete:
@@ -10069,7 +10081,8 @@ qemuDomainSnapshotCreateXML(virDomainPtr
domain,
VIR_DOMAIN_SNAPSHOT_CREATE_HALT |
VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY |
VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT |
- VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE, NULL);
+ VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE |
+ VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC, NULL);
By accepting the new 'atomic' flag, we now have to ensure it works for
all modes.
As written, v1 covered the disk-snapshot mode. The live system
checkpoint mode is already atomic ('savevm' is a single monitor command;
if it can fail partway through, that's a bug in qemu). But for offline
internal snapshots, we were making iterative calls to 'qemu-img snapshot
-c', and not cleaning up after partial failure. I'm sending a v2 to fix
that.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org