mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
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:
parent
dbb0baa5a7
commit
b2960501c7
@ -1492,7 +1492,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
|
||||
|
||||
int qemuDriverAllocateID(virQEMUDriverPtr driver)
|
||||
{
|
||||
return virAtomicIntInc(&driver->nextvmid);
|
||||
return virAtomicIntInc(&driver->lastvmid);
|
||||
}
|
||||
|
||||
|
||||
|
@ -192,7 +192,7 @@ struct _virQEMUDriver {
|
||||
virThreadPoolPtr workerPool;
|
||||
|
||||
/* Atomic increment only */
|
||||
int nextvmid;
|
||||
int lastvmid;
|
||||
|
||||
/* Atomic inc/dec only */
|
||||
unsigned int nactive;
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user