[libvirt] [PATCHv4 3/4] snapshot: Add flag to allow hypervisor restart when reverting snapshots
Eric Blake
eblake at redhat.com
Mon Nov 19 22:53:07 UTC 2012
On 11/19/2012 09:06 AM, Peter Krempa wrote:
> Some hypervisors require a respawn of the hypervisor to allow reverting
> to some snapshot states. This patch adds flag to remove the default
> safe approach to not allow this. When this flag is specified the
> hypervisor driver should re-emit events to allow management apps to
> reconnect.
>
> This flag is meant as a lesser way to enforce the restart of the
> hypervisor, that is a fairly common possibility compared to other
> meanings that the existing force flag has.
> ---
> Force now selects this flag and this flag can be used with internal snapshots too.
> ---
> @@ -12129,7 +12129,11 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
>
> virCheckFlags(VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING |
> VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED |
> - VIR_DOMAIN_SNAPSHOT_REVERT_FORCE, -1);
> + VIR_DOMAIN_SNAPSHOT_REVERT_FORCE |
> + VIR_DOMAIN_SNAPSHOT_REVERT_RESPAWN, -1);
> +
> + if (flags & VIR_DOMAIN_SNAPSHOT_REVERT_FORCE)
> + flags |= VIR_DOMAIN_SNAPSHOT_REVERT_RESPAWN;
Up to here looks fine.
>
> /* We have the following transitions, which create the following events:
> * 1. inactive -> inactive: none
> @@ -12249,7 +12253,7 @@ static int qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
Hmm, this is incomplete. Earlier, inside a
VIR_DOMAIN_SNAPSHOT_REVERT_FORCE check, we have:
if (virDomainObjIsActive(vm) &&
!(snap->def->state == VIR_DOMAIN_RUNNING
|| snap->def->state == VIR_DOMAIN_PAUSED) &&
(flags & (VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING |
VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED))) {
virReportError(VIR_ERR_SNAPSHOT_REVERT_RISKY, "%s",
_("must respawn qemu to start inactive
snapshot"));
goto cleanup;
which should be converted to the new flag.
> if (config && !virDomainDefCheckABIStability(vm->def, config)) {
> virErrorPtr err = virGetLastError();
>
> - if (!(flags & VIR_DOMAIN_SNAPSHOT_REVERT_FORCE)) {
> + if (!(flags & VIR_DOMAIN_SNAPSHOT_REVERT_RESPAWN)) {
> /* Re-spawn error using correct category. */
I think this one is correct, though.
> @@ -2830,6 +2830,10 @@ I<--running> or I<--paused> flags when reverting to a disk snapshot of a
> transient domain. The I<--stopped> flag cannot be used on snapshots
> of transient domains.
>
> +Some snapshot revert approaches may require a respawn of the hypervisor
> +process. This is not allowed by default. You may specify I<--allow-respawn>
> +to override this limit.
It might be worth mentioning that --force implies --allow-respawn (that
is, --force is a supserset of --allow-respawn, in that it can force
situations that --allow-respawn will not).
--
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: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20121119/9989e2e3/attachment-0001.sig>
More information about the libvir-list
mailing list