[libvirt PATCH 41/80] qemu: Ignore missing memory statistics in query-migrate

Peter Krempa pkrempa at redhat.com
Wed May 11 15:22:34 UTC 2022


On Tue, May 10, 2022 at 17:21:02 +0200, Jiri Denemark wrote:
> We want to use query-migrate QMP command to check the current migration
> state when reconnecting to active domains, but the reply we get to this
> command may not contain any statistics at all if called on the
> destination host.
> 
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
>  src/qemu/qemu_monitor_json.c | 88 +++++++++++++++++-------------------
>  1 file changed, 42 insertions(+), 46 deletions(-)
> 
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index 3a497dceae..df3fdfe4fb 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -3249,56 +3249,52 @@ qemuMonitorJSONGetMigrationStatsReply(virJSONValue *reply,
>      case QEMU_MONITOR_MIGRATION_STATUS_PRE_SWITCHOVER:
>      case QEMU_MONITOR_MIGRATION_STATUS_DEVICE:
>          ram = virJSONValueObjectGetObject(ret, "ram");
> -        if (!ram) {
> -            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> -                           _("migration was active, but no RAM info was set"));
> -            return -1;
> -        }
> +        if (ram) {
> +            if (virJSONValueObjectGetNumberUlong(ram, "transferred",
> +                                                 &stats->ram_transferred) < 0) {
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("migration was active, but RAM 'transferred' "
> +                                 "data was missing"));
> +                return -1;
> +            }
> +            if (virJSONValueObjectGetNumberUlong(ram, "remaining",
> +                                                 &stats->ram_remaining) < 0) {
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("migration was active, but RAM 'remaining' "
> +                                 "data was missing"));
> +                return -1;
> +            }
> +            if (virJSONValueObjectGetNumberUlong(ram, "total",
> +                                                 &stats->ram_total) < 0) {
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("migration was active, but RAM 'total' "
> +                                 "data was missing"));
> +                return -1;
> +            }

Please fix error messages to conform with coding style since you are
touching them.

Reviewed-by: Peter Krempa <pkrempa at redhat.com>


More information about the libvir-list mailing list