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@xxxxxxxxxx> > --- > 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