]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: driver: Don't return automatic NUMA vCPU pinning data for persistentDef
authorPeter Krempa <pkrempa@redhat.com>
Wed, 14 Sep 2016 05:37:16 +0000 (07:37 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 21 Sep 2016 14:32:36 +0000 (16:32 +0200)
Calling virDomainGetVcpuPinInfo on a live VM with automatic NUMA pinning
and VIR_DOMAIN_AFFECT_CONFIG would return the automatic pinning data
in some cases which is bogus. Use the autoCpuset property only when
called on a live definition.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1365779

src/qemu/qemu_driver.c

index 4c45fc3b4fbdcea4f1ff952f0bd587b7c4945b1d..f8fc47d379f5ad46b957371e6200fdab90e07b4d 100644 (file)
@@ -5171,8 +5171,9 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom,
 {
     virDomainObjPtr vm = NULL;
     virDomainDefPtr def;
+    bool live;
     int ret = -1;
-    qemuDomainObjPrivatePtr priv = NULL;
+    virBitmapPtr autoCpuset = NULL;
 
     virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
                   VIR_DOMAIN_AFFECT_CONFIG, -1);
@@ -5183,14 +5184,14 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom,
     if (virDomainGetVcpuPinInfoEnsureACL(dom->conn, vm->def) < 0)
         goto cleanup;
 
-    if (!(def = virDomainObjGetOneDef(vm, flags)))
+    if (!(def = virDomainObjGetOneDefState(vm, flags, &live)))
         goto cleanup;
 
-    priv = vm->privateData;
+    if (live)
+        autoCpuset = QEMU_DOMAIN_PRIVATE(vm)->autoCpuset;
 
     ret = virDomainDefGetVcpuPinInfoHelper(def, maplen, ncpumaps, cpumaps,
-                                           virHostCPUGetCount(),
-                                           priv->autoCpuset);
+                                           virHostCPUGetCount(), autoCpuset);
  cleanup:
     virDomainObjEndAPI(&vm);
     return ret;