mirror of https://gitee.com/openkylin/libvirt.git
qemu: Fix domain ID allocation
The rewrite to use GLib's atomic ops functions changed the behavior
of virAtomicIntInc - before it returned the pre-increment value.
Most of the callers using its value were adjusted, but the one
in qemuDriverAllocateID was not. If libvirtd would reconnect to
a running domain during startup, the next started domain would get
the same ID:
$ virsh list
Id Name State
--------------------------
1 f28live running
1 f28live1 running
Use the g_atomic_add function directly (as recommended in viratomic.h)
and add 1 to the result.
This also restores the usual numbering from 1 instead of 0.
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Fixes: 7b9645a7d1
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
This commit is contained in:
parent
5b63cb5abf
commit
e8d5eb0cde
|
@ -1858,7 +1858,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
|
|||
|
||||
int qemuDriverAllocateID(virQEMUDriverPtr driver)
|
||||
{
|
||||
return virAtomicIntInc(&driver->lastvmid);
|
||||
return g_atomic_int_add(&driver->lastvmid, 1) + 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue