[libvirt] [PATCHv2 11/20] snapshot: qemu: Remove restrictions preventing external snapshots
Eric Blake
eblake at redhat.com
Fri Nov 2 23:35:15 UTC 2012
On 11/01/2012 10:22 AM, Peter Krempa wrote:
> Some of the pre-snapshot check have restrictions wired in regarding
> configuration options that influence taking of external checkpoints.
>
> This patch removes restrictions that would inhibit taking of such a
> snapshot.
> ---
> src/qemu/qemu_driver.c | 27 ++++++++++++---------------
> 1 file changed, 12 insertions(+), 15 deletions(-)
>
> - if (!found) {
> + /* external snapshot is possible without specifying a disk to snapshot */
> + if (!found &&
> + !(def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL)) {
'!(a == b)' is awkward; write it 'a != b'
> @@ -11459,9 +11455,10 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
> def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_NONE;
> } else {
> def->state = virDomainObjGetState(vm, NULL);
> - def->memory = (def->state == VIR_DOMAIN_SHUTOFF ?
> - VIR_DOMAIN_SNAPSHOT_LOCATION_NONE :
> - VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL);
> + if (def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
> + align_match = false;
> + align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL;
> + }
This hunk is removing too much.
ACK with this squashed in:
diff --git i/src/qemu/qemu_driver.c w/src/qemu/qemu_driver.c
index ce77b27..ef9771e 100644
--- i/src/qemu/qemu_driver.c
+++ w/src/qemu/qemu_driver.c
@@ -10839,7 +10839,7 @@ qemuDomainSnapshotPrepare(virDomainObjPtr vm,
virDomainSnapshotDefPtr def,
/* external snapshot is possible without specifying a disk to
snapshot */
if (!found &&
- !(def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL)) {
+ def->memory != VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
_("internal and disk-only snapshots require at
least "
"one disk to be selected for snapshot"));
@@ -11460,12 +11460,15 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain,
align_match = false;
def->state = VIR_DOMAIN_DISK_SNAPSHOT;
def->memory = VIR_DOMAIN_SNAPSHOT_LOCATION_NONE;
+ } else if (def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
+ def->state = virDomainObjGetState(vm, NULL);
+ align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL;
+ align_match = false;
} else {
def->state = virDomainObjGetState(vm, NULL);
- if (def->memory == VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL) {
- align_match = false;
- align_location = VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL;
- }
+ def->memory = (def->state == VIR_DOMAIN_SHUTOFF ?
+ VIR_DOMAIN_SNAPSHOT_LOCATION_NONE :
+ VIR_DOMAIN_SNAPSHOT_LOCATION_INTERNAL);
}
if (virDomainSnapshotAlignDisks(def, align_location,
align_match) < 0 ||
--
Eric Blake eblake at redhat.com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 617 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20121102/ad79507d/attachment-0001.sig>
More information about the libvir-list
mailing list