From: Peter Krempa <pkre...@redhat.com>

While the queue count itself is not a guest visible property, libvirt
uses it to calculate the 'vectors' property of the 'virtio-net' device
which is ABI.

Since we don't expose control of 'vectors' explicitly, consider 'queues'
ABI.

Signed-off-by: Peter Krempa <pkre...@redhat.com>
---
 src/conf/domain_conf.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 542d6ade91..b3b0bd7329 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -20801,6 +20801,17 @@ virDomainNetDefCheckABIStability(virDomainNetDef *src,
         return false;
     }

+    /* The number of queues is used to calculate the value for 'vectors'
+     * (see qemuBuildNicDevProps) which is machine ABI thus we need to ensure
+     * that the number of queues is kept in sync */
+    if (virDomainNetIsVirtioModel(src) &&
+        (src->driver.virtio.queues != dst->driver.virtio.queues)) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       _("Target virtio network queue count '%1$d' does not 
match source '%2$d'"),
+                       dst->driver.virtio.queues, src->driver.virtio.queues);
+        return false;
+    }
+
     if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio))
         return false;

-- 
2.49.0

Reply via email to