commit e092daacee330b8f758bceaf1e9a0ccfec2e00c8 Author: Jim Fehlig Date: Fri Jan 17 10:36:32 2020 -0700 lib: Prohibit parallel connections with tunneled migration As discussed on the developer list, parallel migration connections are not compatible with tunneled migration https://www.redhat.com/archives/libvir-list/2020-January/msg00463.html Prohibit the concurrent use of parallel and tunneled migration options. Signed-off-by: Jim Fehlig Reviewed-by: Ján Tomko Index: libvirt-6.0.0/src/libvirt-domain.c =================================================================== --- libvirt-6.0.0.orig/src/libvirt-domain.c +++ libvirt-6.0.0/src/libvirt-domain.c @@ -3548,6 +3548,10 @@ virDomainMigrate(virDomainPtr domain, VIR_MIGRATE_NON_SHARED_INC, error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_MIGRATE_TUNNELLED, + VIR_MIGRATE_PARALLEL, + error); + if (flags & VIR_MIGRATE_OFFLINE) { if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn, VIR_DRV_FEATURE_MIGRATION_OFFLINE)) { @@ -3703,6 +3707,10 @@ virDomainMigrate2(virDomainPtr domain, VIR_MIGRATE_NON_SHARED_INC, error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_MIGRATE_TUNNELLED, + VIR_MIGRATE_PARALLEL, + error); + if (flags & VIR_MIGRATE_OFFLINE) { if (!VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn, VIR_DRV_FEATURE_MIGRATION_OFFLINE)) { @@ -4089,6 +4097,10 @@ virDomainMigrateToURI(virDomainPtr domai virCheckReadOnlyGoto(domain->conn->flags, error); virCheckNonNullArgGoto(duri, error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_MIGRATE_TUNNELLED, + VIR_MIGRATE_PARALLEL, + error); + if (virDomainMigrateUnmanagedCheckCompat(domain, flags) < 0) goto error; @@ -4161,6 +4173,10 @@ virDomainMigrateToURI2(virDomainPtr doma virCheckDomainReturn(domain, -1); virCheckReadOnlyGoto(domain->conn->flags, error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_MIGRATE_TUNNELLED, + VIR_MIGRATE_PARALLEL, + error); + if (virDomainMigrateUnmanagedCheckCompat(domain, flags) < 0) goto error; @@ -4234,6 +4250,10 @@ virDomainMigrateToURI3(virDomainPtr doma virCheckDomainReturn(domain, -1); virCheckReadOnlyGoto(domain->conn->flags, error); + VIR_EXCLUSIVE_FLAGS_GOTO(VIR_MIGRATE_TUNNELLED, + VIR_MIGRATE_PARALLEL, + error); + if (virDomainMigrateUnmanagedCheckCompat(domain, flags) < 0) goto error;