[libvirt] [PATCH 0/6] virObject for reference-counting

Hu Tao hutao at cn.fujitsu.com
Thu Apr 7 07:51:58 UTC 2011


On Wed, Apr 06, 2011 at 03:30:50PM -0600, Eric Blake wrote:
> On 04/06/2011 01:18 AM, Hu Tao wrote:
> > This series adds a virObject structure that manages reference-counting.
> > 
> > Some notes about referece-counting introduced by this series:
> > 
> > A thread owns a virObject by incrementing its reference-count by 1.
> > If a thread owns a virObject, the virObject is guarenteed not be
> > freed until the thread releases ownership by decrementing its
> > reference-count by 1. A thread can't access a virObject after it
> > releases the ownership of virObject because it can be freed at
> > anytime.
> > 
> > A thread can own a virObject legally in these ways:
> > 
> > - a thread owns a virObject that it creates.
> > - a thread owns a virObject if another thread passes the ownership
> >   to it. Example: qemuMonitorOpen
> > - a thread gets a virObject from a container.
> >   Example: virDomainFindByUUID
> > - a container owns a virObject by incrementing its reference-count
> >   by 1 before adding it to the container
> > - if a virObject is removed from a container its reference-count
> >   must be decremented by 1
> > 
> > By following these rules, there is no need to protect operations on
> > an object's reference-count by an external lock. (like in old ways
> > virDomainObj lock protects qemu monitor's ref-count.)
> 
> These rules _need_ to be part of the patch series, preferably added at
> the same time as patch 1/6 (see for example how src/qemu/THREADS.txt
> documents threading issues related to qemu).  I don't know whether
> virobject.h or a standalone document is better (but if you do a
> standalone document, then virobject.h should at least mention it).

OK. Will put it in virobject.h in next version.

> 
> -- 
> Eric Blake   eblake at redhat.com    +1-801-349-2682
> Libvirt virtualization library http://libvirt.org
> 





More information about the libvir-list mailing list