mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06: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)
|
int qemuDriverAllocateID(virQEMUDriverPtr driver)
|
||||||
{
|
{
|
||||||
return virAtomicIntInc(&driver->nextvmid);
|
return virAtomicIntInc(&driver->lastvmid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user