On 28/07/15 17:49, Daniel P. Berrange wrote:
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
Adjusted and pushed, thank you.
Erik