On Tue, Jul 28, 2015 at 05:41:25PM +0200, Erik Skultety wrote:
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)
You can s/>=/>/ now too - functionally the same but slightly
less misleading
- *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,
ACK
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|