[libvirt] [PATCH v2 5/8] qemu: Don't report false errors in migration protocol v2
John Ferlan
jferlan at redhat.com
Thu Sep 17 22:10:59 UTC 2015
On 09/11/2015 09:26 AM, Jiri Denemark wrote:
> Finish is the final state in v2 of our migration protocol. If something
> fails, we have no option to abort the migration and resume the original
> domain. Non fatal errors (such as failure to start guest CPUs or make
> the domain persistent) has to be treated as success. Keeping the domain
> running while reporting the failure was just asking for trouble.
>
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>
> Notes:
> Version 2:
> - rebased on top of changed patch 1
>
> src/qemu/qemu_migration.c | 21 ++++++++-------------
> 1 file changed, 8 insertions(+), 13 deletions(-)
>
Well we didn't 'keep' that long ;-) (need to look-ahead more often ;-))
Seems reasonable ACK
John
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 53444f7..35ab521 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -5624,7 +5624,6 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
> qemuDomainObjPrivatePtr priv = vm->privateData;
> virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
> unsigned short port;
> - bool keep = false;
>
> VIR_DEBUG("driver=%p, dconn=%p, vm=%p, cookiein=%s, cookieinlen=%d, "
> "cookieout=%p, cookieoutlen=%p, flags=%lx, retcode=%d",
> @@ -5700,17 +5699,14 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
> * other hand, if we report failure, then the management tools
> * might try to restart the domain on the source side, even
> * though the domain is actually running on the destination.
> - * Return a NULL dom pointer, and hope that this is a rare
> - * situation and management tools are smart.
> - */
> -
> - /*
> + * Pretend success and hope that this is a rare situation and
> + * management tools are smart.
> + *
Close your eyes and kiss your domain goodbye...
Too bad there wasn't a way to inhibit the mgmt tools from doing that
start if they weren't smart, but yet still fake the success
> * However, in v3 protocol, the source VM is still available
> * to restart during confirm() step, so we kill it off now.
> */
> - if (!v3proto)
> - keep = true;
> - goto endjob;
> + if (v3proto)
> + goto endjob;
> }
> }
>
> @@ -5738,9 +5734,8 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
> * target in paused state, in case admin can fix
> * things up
> */
> - if (!v3proto)
> - keep = true;
> - goto endjob;
> + if (v3proto)
> + goto endjob;
> }
> if (priv->job.completed) {
> qemuDomainJobInfoUpdateTime(priv->job.completed);
> @@ -5781,7 +5776,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
> }
>
> endjob:
> - if (!dom && !keep &&
> + if (!dom &&
> !(flags & VIR_MIGRATE_OFFLINE) &&
> virDomainObjIsActive(vm)) {
> qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_FAILED,
>
More information about the libvir-list
mailing list