qemu: driver: Don't return automatic NUMA vCPU pinning data for persistentDef

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
This commit is contained in:
Peter Krempa 2016-09-14 07:37:16 +02:00
parent 63aac8c299
commit 552892c59d

View File

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