[libvirt] [PATCH 22/34] qemu: monitor: Remove weird return values from qemuMonitorSetCPU

John Ferlan jferlan at redhat.com
Mon Nov 23 20:07:32 UTC 2015



On 11/20/2015 10:22 AM, Peter Krempa wrote:
> Let the function report errors internally and change it to return
> standard return codes.
> ---
>  src/qemu/qemu_driver.c       | 22 ++++------------------
>  src/qemu/qemu_monitor_json.c |  4 ----
>  src/qemu/qemu_monitor_text.c | 22 +++++++++++-----------
>  3 files changed, 15 insertions(+), 33 deletions(-)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 49fdd63..9011b2d 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -4698,7 +4698,6 @@ qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      size_t i;
> -    int rc = 1;
>      int ret = -1;
>      int oldvcpus = virDomainDefGetVCpus(vm->def);
>      int vcpus = oldvcpus;
> @@ -4712,10 +4711,7 @@ qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
> 
>      for (i = vcpus; i < nvcpus; i++) {
>          /* Online new CPU */
> -        rc = qemuMonitorSetCPU(priv->mon, i, true);
> -        if (rc == 0)
> -            goto unsupported;
> -        if (rc < 0)
> +        if (qemuMonitorSetCPU(priv->mon, i, true) < 0)
>              goto exit_monitor;
> 
>          vcpus++;
> @@ -4795,14 +4791,11 @@ qemuDomainHotplugVcpus(virQEMUDriverPtr driver,
>      if (virDomainObjIsActive(vm) &&
>          virDomainDefSetVCpus(vm->def, vcpus) < 0)
>          ret = -1;
> -    virDomainAuditVcpu(vm, oldvcpus, nvcpus, "update", rc == 1);
> +    virDomainAuditVcpu(vm, oldvcpus, nvcpus, "update", ret == 0);
>      if (cgroup_vcpu)
>          virCgroupFree(&cgroup_vcpu);
>      return ret;
> 
> - unsupported:
> -    virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> -                   _("cannot change vcpu count of this domain"));
>   exit_monitor:
>      ignore_value(qemuDomainObjExitMonitor(driver, vm));
>      goto cleanup;
> @@ -4816,7 +4809,6 @@ qemuDomainHotunplugVcpus(virQEMUDriverPtr driver,
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      size_t i;
> -    int rc = 1;
>      int ret = -1;
>      int oldvcpus = virDomainDefGetVCpus(vm->def);
>      int vcpus = oldvcpus;
> @@ -4827,10 +4819,7 @@ qemuDomainHotunplugVcpus(virQEMUDriverPtr driver,
> 
>      for (i = vcpus - 1; i >= nvcpus; i--) {
>          /* Offline old CPU */
> -        rc = qemuMonitorSetCPU(priv->mon, i, false);
> -        if (rc == 0)
> -            goto unsupported;
> -        if (rc < 0)
> +        if (qemuMonitorSetCPU(priv->mon, i, false) < 0)
>              goto exit_monitor;
> 
>          vcpus--;
> @@ -4889,12 +4878,9 @@ qemuDomainHotunplugVcpus(virQEMUDriverPtr driver,
>      if (virDomainObjIsActive(vm) &&
>          virDomainDefSetVCpus(vm->def, vcpus) < 0)
>          ret = -1;
> -    virDomainAuditVcpu(vm, oldvcpus, nvcpus, "update", rc == 1);
> +    virDomainAuditVcpu(vm, oldvcpus, nvcpus, "update", ret == 0);
>      return ret;
> 
> - unsupported:
> -    virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> -                   _("cannot change vcpu count of this domain"));
>   exit_monitor:
>      ignore_value(qemuDomainObjExitMonitor(driver, vm));
>      goto cleanup;
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 86b8c7b..50d6f62 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c

Need to adjust comments here...  Probably could move the comments to
qemuMonitorSetCPU just so it doesn't cause chase into second level to
know what function returns.

> @@ -2188,10 +2188,6 @@ int qemuMonitorJSONSetCPU(qemuMonitorPtr mon,
>      else
>          ret = qemuMonitorJSONCheckError(cmd, reply);
> 
> -    /* this function has non-standard return values, so adapt it */
> -    if (ret == 0)
> -        ret = 1;
> -
>   cleanup:
>      virJSONValueFree(cmd);
>      virJSONValueFree(reply);
> diff --git a/src/qemu/qemu_monitor_text.c b/src/qemu/qemu_monitor_text.c
> index f44da20..fd38d01 100644
> --- a/src/qemu/qemu_monitor_text.c
> +++ b/src/qemu/qemu_monitor_text.c
> @@ -1137,8 +1137,7 @@ qemuMonitorTextSetBalloon(qemuMonitorPtr mon,
> 
> 
>  /*
> - * Returns: 0 if CPU hotplug not supported, +1 if CPU hotplug worked
> - * or -1 on failure
> + * Returns: 0 if CPU modification was successful or -1 on failure
>   */

Could copy/move the comment to qemuMonitorSetCPU

ACK - as long as JSON function comments modified.

John

>  int qemuMonitorTextSetCPU(qemuMonitorPtr mon, int cpu, bool online)
>  {
> @@ -1149,22 +1148,23 @@ int qemuMonitorTextSetCPU(qemuMonitorPtr mon, int cpu, bool online)
>      if (virAsprintf(&cmd, "cpu_set %d %s", cpu, online ? "online" : "offline") < 0)
>          return -1;
> 
> -    if (qemuMonitorHMPCommand(mon, cmd, &reply) < 0) {
> -        VIR_FREE(cmd);
> -        return -1;
> -    }
> -    VIR_FREE(cmd);
> +    if (qemuMonitorHMPCommand(mon, cmd, &reply) < 0)
> +        goto cleanup;
> 
>      /* If the command failed qemu prints: 'unknown command'
>       * No message is printed on success it seems */
>      if (strstr(reply, "unknown command:")) {
> -        /* Don't set error - it is expected CPU onlining fails on many qemu - caller will handle */
> -        ret = 0;
> -    } else {
> -        ret = 1;
> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                       _("cannot change vcpu count of this domain"));
> +        goto cleanup;
>      }
> 
> +    ret = 0;
> +
> + cleanup:
>      VIR_FREE(reply);
> +    VIR_FREE(cmd);
> +
>      return ret;
>  }
> 




More information about the libvir-list mailing list