Re: [PATCH 4/7] qemu: Unite error handling in qemuMigrationRun

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 19, 2017 at 15:56:29 +0200, Jiri Denemark wrote:
> Merge cancel and cancelPostCopy sections with the generic error section,
> where we can easily decide whether canceling the ongoing migration is
> required.
...
> @@ -3843,13 +3844,18 @@ qemuMigrationRun(virQEMUDriverPtr driver,
>      rc = qemuMigrationWaitForCompletion(driver, vm,
>                                          QEMU_ASYNC_JOB_MIGRATION_OUT,
>                                          dconn, waitFlags);
> -    if (rc == -2)
> -        goto cancel;
> -    else if (rc == -1)
> +    if (rc == -2) {
>          goto error;
> +    } else if (rc == -1) {
> +        /* QEMU reported failed migration, nothing to cancel anymore */
> +        cancel = false;
> +        goto error;
> +    }
>  
> -    if (priv->job.current->status == QEMU_DOMAIN_JOB_STATUS_POSTCOPY)
> -        inPostCopy = true;
> +    if (priv->job.current->status == QEMU_DOMAIN_JOB_STATUS_QEMU_COMPLETED) {
> +        /* QEMU finished migration, nothing to cancel anymore */
> +        cancel = false;
> +    }
>  
>      /* When migration completed, QEMU will have paused the CPUs for us.
>       * Wait for the STOP event to be processed or explicitly stop CPUs

Please, consider the following small patch squashed in:

diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index bc57f757a..626b4e3ee 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -3855,11 +3855,6 @@ qemuMigrationRun(virQEMUDriverPtr driver,
         goto error;
     }
 
-    if (priv->job.current->status == QEMU_DOMAIN_JOB_STATUS_QEMU_COMPLETED) {
-        /* QEMU finished migration, nothing to cancel anymore */
-        cancel = false;
-    }
-
     /* When migration completed, QEMU will have paused the CPUs for us.
      * Wait for the STOP event to be processed or explicitly stop CPUs
      * (for old QEMU which does not send events) to release the lock state.
@@ -3931,6 +3926,7 @@ qemuMigrationRun(virQEMUDriverPtr driver,
     orig_err = virSaveLastError();
 
     if (cancel &&
+        priv->job.current->status != QEMU_DOMAIN_JOB_STATUS_QEMU_COMPLETED &&
         virDomainObjIsActive(vm) &&
         qemuDomainObjEnterMonitorAsync(driver, vm,
                                        QEMU_ASYNC_JOB_MIGRATION_OUT) == 0) {

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux