[libvirt PATCH v2 5/5] qemu_migrate: Do not forbif vDPA devices if can query blockers

Jiri Denemark jdenemar at redhat.com
Wed Jul 20 10:36:16 UTC 2022


On Wed, Jul 20, 2022 at 11:11:54 +0200, Eugenio Pérez wrote:
> vDPA devices will be migratable soon. Since they are not migratable
> before qemu 6.0, and qemu pre-6.0 didn't have the capability of asking
> for migration blockers, let it hardcoded in that case.
> 
> Otherwise, ask qemu about the explicit blocker.
> 
> Signed-off-by: Eugenio Pérez <eperezma at redhat.com>
> ---
>  src/qemu/qemu_migration.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 4224339f39..2f5c1d8121 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -1454,9 +1454,11 @@ qemuMigrationSrcIsAllowed(virQEMUDriver *driver,
>      int pauseReason;
>      size_t i;
>      int r;
> +    bool blockedReasonsCap = virQEMUCapsGet(priv->qemuCaps,
> +                                          QEMU_CAPS_MIGRATION_BLOCKED_REASONS);

Wrong indentation of the second line (QEMU... should be aligned with
priv).

>  
>      /* Ask qemu if it have a migration blocker */
> -    if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MIGRATION_BLOCKED_REASONS)) {
> +    if (blockedReasonsCap) {
>          g_auto(GStrv) blockers = NULL;
>          r = qemuDomainGetMigrationBlockers(driver, vm, &blockers);
>          if (r != 0) {
> @@ -1579,7 +1581,8 @@ qemuMigrationSrcIsAllowed(virQEMUDriver *driver,
>              virDomainNetDef *net = vm->def->nets[i];
>              qemuSlirp *slirp;
>  
> -            if (net->type == VIR_DOMAIN_NET_TYPE_VDPA) {
> +

Extra empty line.

> +            if (!blockedReasonsCap && net->type == VIR_DOMAIN_NET_TYPE_VDPA) {

So possibly we could skip more checks in the function if migration
blockers are supported by QEMU, but this is a good conservative
approach. The other checks (if any) can be taken care of separately.

>                  virReportError(VIR_ERR_OPERATION_INVALID, "%s",
>                                 _("vDPA devices cannot be migrated"));
>                  return false;

Jirka


More information about the libvir-list mailing list