mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: update threading info about domain object refs
Since commit fd9ef3b31e, virDomainFindByUUIDRef() no longer exists and all virDomainObjListFindBy*() functions now increment the reference count. Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
ec78c9a0ff
commit
2029f8269b
@ -25,27 +25,17 @@ There are a number of locks on various objects
|
|||||||
|
|
||||||
* virDomainObjPtr
|
* virDomainObjPtr
|
||||||
|
|
||||||
Will be locked after calling any of the virDomainObjListFindBy{ID,Name,UUID}
|
Will be locked and the reference counter will be increased after calling
|
||||||
methods. However, preferred method is qemuDomObjFromDomain() that uses
|
any of the virDomainObjListFindBy{ID,Name,UUID} methods. The preferred way
|
||||||
virDomainFindByUUIDRef() which also increases the reference counter and
|
of decrementing the reference counter and unlocking the domain is using the
|
||||||
finds the domain in the domain list without blocking all other lookups.
|
|
||||||
When the domain is locked and the reference increased, the preferred way of
|
|
||||||
decrementing the reference counter and unlocking the domain is using the
|
|
||||||
virDomainObjEndAPI() function.
|
virDomainObjEndAPI() function.
|
||||||
|
|
||||||
Lock must be held when changing/reading any variable in the virDomainObjPtr
|
Lock must be held when changing/reading any variable in the virDomainObjPtr
|
||||||
|
|
||||||
If the lock needs to be dropped & then re-acquired for a short period of
|
|
||||||
time, the reference count must be incremented first using virDomainObjRef().
|
|
||||||
There is no need to increase the reference count if qemuDomObjFromDomain()
|
|
||||||
was used for looking up the domain. In this case there is one reference
|
|
||||||
already added by that function.
|
|
||||||
|
|
||||||
This lock must not be held for anything which sleeps/waits (i.e. monitor
|
This lock must not be held for anything which sleeps/waits (i.e. monitor
|
||||||
commands).
|
commands).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* qemuMonitorPrivatePtr: Job conditions
|
* qemuMonitorPrivatePtr: Job conditions
|
||||||
|
|
||||||
Since virDomainObjPtr lock must not be held during sleeps, the job
|
Since virDomainObjPtr lock must not be held during sleeps, the job
|
||||||
|
Loading…
x
Reference in New Issue
Block a user