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. --- src/qemu/qemu_conf.c | 2 +- src/qemu/qemu_conf.h | 2 +- src/qemu/qemu_driver.c | 7 ++----- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 38d4a86..29049dc 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1492,7 +1492,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev) int qemuDriverAllocateID(virQEMUDriverPtr driver) { - return virAtomicIntInc(&driver->nextvmid); + return virAtomicIntInc(&driver->lastvmid); } diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 3f73929..ed9cd46 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -192,7 +192,7 @@ struct _virQEMUDriver { virThreadPoolPtr workerPool; /* Atomic increment only */ - int nextvmid; + int lastvmid; /* Atomic inc/dec only */ unsigned int nactive; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index a761448..055f0ca 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -612,7 +612,7 @@ qemuDomainFindMaxID(virDomainObjPtr vm, int *driver_maxid = data; if (vm->def->id >= *driver_maxid) - *driver_maxid = vm->def->id + 1; + *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, -- 2.4.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list