Re: [libvirt PATCH 4/6] qemu: Add support for optional migration capabilities

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

 



On Mon, Jan 08, 2024 at 18:06:40 +0100, Jiri Denemark wrote:
> We enable various migration capabilities according to the flags passed
> to a migration API. Missing support for such capabilities results in an
> error because they are required by the corresponding flag. This patch
> adds support for additional optional capability we may want to enable
> for a given API flag in case it is supported. This is useful for
> capabilities which are not critical for the flags to be supported, but
> they can make things work better in some way.
> 
> Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx>
> ---
>  src/qemu/qemu_migration.c        |  8 ++---
>  src/qemu/qemu_migration_params.c | 57 +++++++++++++++++++++++++++++---
>  src/qemu/qemu_migration_params.h |  1 +
>  3 files changed, 57 insertions(+), 9 deletions(-)

[...]

> @@ -1303,16 +1324,42 @@ qemuMigrationParamsCheck(virDomainObj *vm,
>          party = QEMU_MIGRATION_DESTINATION;
>  
>      for (cap = 0; cap < QEMU_MIGRATION_CAP_LAST; cap++) {
> -        bool state = false;
> -
> -        ignore_value(virBitmapGetBit(migParams->caps, cap, &state));
> -
> -        if (state && !qemuMigrationCapsGet(vm, cap)) {
> +        bool enable = false;
> +        bool optional = false;
> +        bool remoteOpt = false;
> +        bool remote = false;
> +        bool qemu = qemuMigrationCapsGet(vm, cap);
> +
> +        ignore_value(virBitmapGetBit(migParams->caps, cap, &enable));
> +        ignore_value(virBitmapGetBit(migParams->optional, cap, &optional));
> +        ignore_value(virBitmapGetBit(migParams->remoteOptional, cap, &remoteOpt));
> +        ignore_value(virBitmapGetBit(remoteSupported, cap, &remote));
> +
> +        if (enable && !qemu) {
>              virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED,
>                             _("Migration option '%1$s' is not supported by QEMU binary"),
>                             qemuMigrationCapabilityTypeToString(cap));
>              return -1;
>          }
> +
> +        if (optional) {
> +            if (!qemu) {
> +                VIR_DEBUG("Optional migration capability '%s' not supported by QEMU",
> +                          qemuMigrationCapabilityTypeToString(cap));
> +                optional = false;
> +            } else if (remoteOpt && ! remote) {

s/! r/!r/

> +                VIR_DEBUG("Optional migration capability '%s' not supported "
> +                          "by the other side of migration",
> +                          qemuMigrationCapabilityTypeToString(cap));

Reviewed-by: Peter Krempa <pkrempa@xxxxxxxxxx>
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[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