[Libvir] RFC: PATCH 4/5: make test driver thread safe

Richard W.M. Jones rjones at redhat.com
Mon Jan 14 11:11:04 UTC 2008


Daniel P. Berrange wrote:
> The current test driver keeps all its state in memory and is
> not thread safe. Since background jobs will need to access
> state from a thread periodically we need to make the test
> driver thread safe. This is done with 2 levels of locking
> 
>  - A global driver lock.
>  - A per-connection lock
> 
> Before taking the per-connection lock, the global driver lock
> must be acquired. The driver lock can be released the moment
> the connection lock is acquired. The connection lock must be
> held for the duration of all driver methods which are accessing
> the 'struct testConn' or 'struct testDom' or 'struct testNet'
> data.
> 
> To keep this reasonably unobtrusive, the GET_CONNECT, and
> GET_DOMAIN / GET_NETWORK macros have been altered to do the
> neccessary lock acquisition. The RELEASE_DOMAIN and RELEASE_NETWORL
> macros are new, and must be used prior to returning from any
> driver method so that mutex are released.
> 
> This is a fairly coarse level of locking, but effective enough
> for the test driver which is not performance critical - merely
> safety critical.
> 
> This model should apply reasonably safely to the QEMU driver
> too, though we may wish to make it finer grained.

Sensible.  Maybe add some artifically slow functions to the test driver 
as well so that we can test job control?

Rich.

-- 
Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom.  Registered in
England and Wales under Company Registration No. 03798903
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3237 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20080114/af7d0a48/attachment-0001.bin>


More information about the libvir-list mailing list