[libvirt] [PATCH] qemu: update threading info about domain object refs
Daniel Henrique Barboza
danielhb413 at gmail.com
Fri Sep 6 12:54:29 UTC 2019
On 9/4/19 2:23 PM, Jonathon Jongsma wrote:
> Since commit fd9ef3b31e, virDomainFindByUUIDRef() no longer exists and
> all virDomainObjListFindBy*() functions now increment the reference
> count.
>
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
> src/qemu/THREADS.txt | 16 +++-------------
> 1 file changed, 3 insertions(+), 13 deletions(-)
Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> diff --git a/src/qemu/THREADS.txt b/src/qemu/THREADS.txt
> index d17f3f4e0c..aa428fda6a 100644
> --- a/src/qemu/THREADS.txt
> +++ b/src/qemu/THREADS.txt
> @@ -25,27 +25,17 @@ There are a number of locks on various objects
>
> * virDomainObjPtr
>
> - Will be locked after calling any of the virDomainObjListFindBy{ID,Name,UUID}
> - methods. However, preferred method is qemuDomObjFromDomain() that uses
> - virDomainFindByUUIDRef() which also increases the reference counter and
> - 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
> + Will be locked and the reference counter will be increased after calling
> + any of the virDomainObjListFindBy{ID,Name,UUID} methods. The preferred way
> + of decrementing the reference counter and unlocking the domain is using the
> virDomainObjEndAPI() function.
>
> 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
> commands).
>
>
> -
> * qemuMonitorPrivatePtr: Job conditions
>
> Since virDomainObjPtr lock must not be held during sleeps, the job
More information about the libvir-list
mailing list