[libvirt] [PATCH v3 REBASE v2 2/2] qemu: report drive mirror errors on migration

Jiri Denemark jdenemar at redhat.com
Thu Nov 30 17:21:32 UTC 2017


On Fri, Oct 27, 2017 at 15:37:23 +0300, Nikolay Shirokovskiy wrote:
> ---
>  src/qemu/qemu_blockjob.c  | 14 +++++++++---
>  src/qemu/qemu_blockjob.h  |  3 ++-
>  src/qemu/qemu_driver.c    |  4 ++--
>  src/qemu/qemu_migration.c | 55 +++++++++++++++++++++++++++++++++--------------
>  4 files changed, 54 insertions(+), 22 deletions(-)
...
> @@ -736,24 +752,30 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver,
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      char *diskAlias = NULL;
> +    char *error = NULL;
>      int ret = -1;
>      int status;
>      int rv;
>  
> -    status = qemuBlockJobUpdate(driver, vm, asyncJob, disk);
> +    status = qemuBlockJobUpdate(driver, vm, asyncJob, disk, &error);
>      switch (status) {
>      case VIR_DOMAIN_BLOCK_JOB_FAILED:
>      case VIR_DOMAIN_BLOCK_JOB_CANCELED:
>          if (failNoJob) {
> -            virReportError(VIR_ERR_OPERATION_FAILED,
> -                           _("migration of disk %s failed"),
> -                           disk->dst);
> -            return -1;
> +            if (error) {
> +                virReportError(VIR_ERR_OPERATION_FAILED,
> +                               _("migration of disk %s failed: %s"),
> +                               disk->dst, error);
> +            } else {
> +                virReportError(VIR_ERR_OPERATION_FAILED,
> +                               _("migration of disk %s failed"), disk->dst);
> +            }
> +            goto cleanup;
>          }
> -        return 1;
> -
> +    /* fallthrough */

Use ATTRIBUTE_FALLTHROUGH instead of this comment.

>      case VIR_DOMAIN_BLOCK_JOB_COMPLETED:
> -        return 1;
> +        ret = 1;
> +        goto cleanup;
>      }
>  
>      if (!(diskAlias = qemuAliasFromDisk(disk)))
> @@ -771,6 +793,7 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver,
>  
>   cleanup:
>      VIR_FREE(diskAlias);
> +    VIR_FREE(error);
>      return ret;
>  }
>  

ACK with the small change.

I'll push this series after the release.

Jirka




More information about the libvir-list mailing list