[Libvir] RFC: PATCH 1/5: cleanup connection ref counting
Richard W.M. Jones
rjones at redhat.com
Mon Jan 14 10:35:10 UTC 2008
Daniel P. Berrange wrote:
> The referencing counting code for Connect/Domain/Network
> objects has many repeated codepaths, not all of which are
> correct. eg, the virFreeDomain method forgets to release
> networks when garbage collecting a virConnectPtr, and the
> virFreeNetwork method forgets to release domains.
The reference counting in libvirt is not just ugly when interfacing with
a language with real GC, but also broken at the moment.
The most serious example are the connect/domain/network handles included
in a virterror. These are not reference counted so that the caller
doesn't have to free the virterror or these handles. But on the other
hand it means that the handles have an indeterminate lifetime, so cannot
be used safely.
> So I've moved the code for garbage collecting a virConnectPtr
> object into a new virUnrefConnect() method which can be called
> from virFreeConnect, virFreeDomain and virFreeNetwork.
This probably has negative implications in the language bindings. At
this moment I don't care much because network objects are in practice
used only very rarely by real code. This could change when we have
storage objects which, I guess, will be used frequently like domains. A
bit too early in the morning for me to be thinking about GC and its
interaction with reference counting :-)
The rest of the patch looks good. We should probably integrate this
patch in the code right now since (a) it's isolated, (b) it implements
much-needed cleanups, and (c) it needs serious testing.
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/a11ff37a/attachment-0001.bin>
More information about the libvir-list
mailing list