From: Jonathon Jongsma Date: Wed, 4 Sep 2019 17:23:30 +0000 (-0500) Subject: qemu: update threading info about domain object refs X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=2029f8269be140e569d2c9e6d7de7d2afb0ed1fb;p=libvirt.git 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 Reviewed-by: Daniel Henrique Barboza Reviewed-by: Pavel Hrdina --- 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