[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