mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
qemu: driver: Don't return automatic NUMA emulator pinning data for persistentDef
Calling virDomainGetEmulatorPinInfo 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:
parent
552892c59d
commit
006a532cc0
@ -5317,11 +5317,12 @@ qemuDomainGetEmulatorPinInfo(virDomainPtr dom,
|
||||
{
|
||||
virDomainObjPtr vm = NULL;
|
||||
virDomainDefPtr def;
|
||||
bool live;
|
||||
int ret = -1;
|
||||
int hostcpus;
|
||||
virBitmapPtr cpumask = NULL;
|
||||
virBitmapPtr bitmap = NULL;
|
||||
qemuDomainObjPrivatePtr priv = NULL;
|
||||
virBitmapPtr autoCpuset = NULL;
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||
VIR_DOMAIN_AFFECT_CONFIG, -1);
|
||||
@ -5332,21 +5333,22 @@ qemuDomainGetEmulatorPinInfo(virDomainPtr dom,
|
||||
if (virDomainGetEmulatorPinInfoEnsureACL(dom->conn, vm->def) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(def = virDomainObjGetOneDef(vm, flags)))
|
||||
if (!(def = virDomainObjGetOneDefState(vm, flags, &live)))
|
||||
goto cleanup;
|
||||
|
||||
if ((hostcpus = virHostCPUGetCount()) < 0)
|
||||
goto cleanup;
|
||||
|
||||
priv = vm->privateData;
|
||||
if (live)
|
||||
autoCpuset = QEMU_DOMAIN_PRIVATE(vm)->autoCpuset;
|
||||
|
||||
if (def->cputune.emulatorpin) {
|
||||
cpumask = def->cputune.emulatorpin;
|
||||
} else if (def->cpumask) {
|
||||
cpumask = def->cpumask;
|
||||
} else if (vm->def->placement_mode == VIR_DOMAIN_CPU_PLACEMENT_MODE_AUTO &&
|
||||
priv->autoCpuset) {
|
||||
cpumask = priv->autoCpuset;
|
||||
autoCpuset) {
|
||||
cpumask = autoCpuset;
|
||||
} else {
|
||||
if (!(bitmap = virBitmapNew(hostcpus)))
|
||||
goto cleanup;
|
||||
|
Loading…
Reference in New Issue
Block a user