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)
{
return virAtomicIntInc(&driver->nextvmid);
return virAtomicIntInc(&driver->lastvmid);
}

View File

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

View File

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