[libvirt] [PATCH] qemu: Adjust VM id allocation
Erik Skultety
eskultet at redhat.com
Wed Jul 29 07:21:05 UTC 2015
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
More information about the libvir-list
mailing list