[PATCH 02/12] qemuMonitorSetMigrationCapabilities: Take double pointer for @caps

Michal Privoznik mprivozn at redhat.com
Thu Jan 7 11:22:50 UTC 2021


On 1/6/21 3:03 PM, Peter Krempa wrote:
> This allows simplification of the callers.
> 
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>   src/qemu/qemu_migration_params.c | 13 ++++---------
>   src/qemu/qemu_monitor.c          | 11 +++--------
>   src/qemu/qemu_monitor.h          |  2 +-
>   src/qemu/qemu_monitor_json.c     |  5 ++---
>   src/qemu/qemu_monitor_json.h     |  2 +-
>   tests/qemumonitorjsontest.c      |  3 +--
>   6 files changed, 12 insertions(+), 24 deletions(-)
> 
> diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
> index d1d59aeb01..8c019bf2ce 100644
> --- a/src/qemu/qemu_migration_params.c
> +++ b/src/qemu/qemu_migration_params.c
> @@ -803,7 +803,6 @@ qemuMigrationParamsApply(virQEMUDriverPtr driver,
>       g_autoptr(virJSONValue) caps = NULL;
>       qemuMigrationParam xbzrle = QEMU_MIGRATION_PARAM_XBZRLE_CACHE_SIZE;
>       int ret = -1;
> -    int rc;
> 
>       if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
>           return -1;
> @@ -819,12 +818,9 @@ qemuMigrationParamsApply(virQEMUDriverPtr driver,
>           if (!(caps = qemuMigrationCapsToJSON(priv->migrationCaps, migParams->caps)))
>               goto cleanup;
> 
> -        if (virJSONValueArraySize(caps) > 0) {
> -            rc = qemuMonitorSetMigrationCapabilities(priv->mon, caps);
> -            caps = NULL;
> -            if (rc < 0)
> -                goto cleanup;
> -        }
> +        if (virJSONValueArraySize(caps) > 0 &&
> +            qemuMonitorSetMigrationCapabilities(priv->mon, &caps) < 0)
> +            goto cleanup;
>       }
> 
>       /* If QEMU is too old to support xbzrle-cache-size migration parameter,
> @@ -1389,8 +1385,7 @@ qemuMigrationCapsCheck(virQEMUDriverPtr driver,
>           if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
>               return -1;
> 
> -        rc = qemuMonitorSetMigrationCapabilities(priv->mon, json);
> -        json = NULL;
> +        rc = qemuMonitorSetMigrationCapabilities(priv->mon, &json);
> 
>           if (qemuDomainObjExitMonitor(driver, vm) < 0)
>               return -1;
> diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
> index a81cd5fff5..8b1f90b363 100644
> --- a/src/qemu/qemu_monitor.c
> +++ b/src/qemu/qemu_monitor.c
> @@ -3877,22 +3877,17 @@ qemuMonitorGetMigrationCapabilities(qemuMonitorPtr mon,
>    * @mon: Pointer to the monitor object.
>    * @caps: Migration capabilities.
>    *
> - * The @caps object is consumed and should not be referenced by the caller
> - * after this function returns.
> + * The @caps object is consumed cleared.

Same here.

>    *
>    * Returns 0 on success, -1 on error.
>    */
>   int
>   qemuMonitorSetMigrationCapabilities(qemuMonitorPtr mon,
> -                                    virJSONValuePtr caps)
> +                                    virJSONValuePtr *caps)
>   {
> -    QEMU_CHECK_MONITOR_GOTO(mon, error);
> +    QEMU_CHECK_MONITOR(mon);
> 
>       return qemuMonitorJSONSetMigrationCapabilities(mon, caps);
> -
> - error:
> -    virJSONValueFree(caps);
> -    return -1;
>   }
> 

Michal




More information about the libvir-list mailing list