qemu: Adjust VM id allocation

Our atomic increment (virAtomicIntInc) uses (if available) gcc
__sync_add_and_fetch builtin. In qemu driver though, we'd profit more
from __sync_fetch_and_add builtin. To keep it simplistic, this patch
adjusts qemu driver initialization rather than adding a new atomic
increment macro.
This commit is contained in:
Erik Skultety 2015-07-28 17:33:53 +02:00
parent dbb0baa5a7
commit b2960501c7
3 changed files with 5 additions and 8 deletions

View File

@ -1492,7 +1492,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
int qemuDriverAllocateID(virQEMUDriverPtr driver) int qemuDriverAllocateID(virQEMUDriverPtr driver)
{ {
return virAtomicIntInc(&driver->nextvmid); return virAtomicIntInc(&driver->lastvmid);
} }

View File

@ -192,7 +192,7 @@ struct _virQEMUDriver {
virThreadPoolPtr workerPool; virThreadPoolPtr workerPool;
/* Atomic increment only */ /* Atomic increment only */
int nextvmid; int lastvmid;
/* Atomic inc/dec only */ /* Atomic inc/dec only */
unsigned int nactive; unsigned int nactive;

View File

@ -611,8 +611,8 @@ qemuDomainFindMaxID(virDomainObjPtr vm,
{ {
int *driver_maxid = data; int *driver_maxid = data;
if (vm->def->id >= *driver_maxid) if (vm->def->id > *driver_maxid)
*driver_maxid = vm->def->id + 1; *driver_maxid = vm->def->id;
return 0; return 0;
} }
@ -649,9 +649,6 @@ qemuStateInitialize(bool privileged,
qemu_driver->inhibitCallback = callback; qemu_driver->inhibitCallback = callback;
qemu_driver->inhibitOpaque = opaque; qemu_driver->inhibitOpaque = opaque;
/* Don't have a dom0 so start from 1 */
qemu_driver->nextvmid = 1;
qemu_driver->privileged = privileged; qemu_driver->privileged = privileged;
if (!(qemu_driver->domains = virDomainObjListNew())) if (!(qemu_driver->domains = virDomainObjListNew()))
@ -909,7 +906,7 @@ qemuStateInitialize(bool privileged,
* threads */ * threads */
virDomainObjListForEach(qemu_driver->domains, virDomainObjListForEach(qemu_driver->domains,
qemuDomainFindMaxID, qemuDomainFindMaxID,
&qemu_driver->nextvmid); &qemu_driver->lastvmid);
virDomainObjListForEach(qemu_driver->domains, virDomainObjListForEach(qemu_driver->domains,
qemuDomainNetsRestart, qemuDomainNetsRestart,