[libvirt] [PATCH] docs: fix docs to match behavior of virConnectClose
Matthias Bolte
matthias.bolte at googlemail.com
Wed Jun 22 17:30:05 UTC 2011
2011/6/22 Eric Blake <eblake at redhat.com>:
> On 06/22/2011 10:43 AM, Matthias Bolte wrote:
>> 2011/6/22 Eric Blake <eblake at redhat.com>:
>>> * src/libvirt.c (virConnectClose): Mention reference count return.
>>> Reported by Michal Novotny, analyzed by Matthias Bolte.
>>> ---
>>> src/libvirt.c | 7 ++++++-
>>> 1 files changed, 6 insertions(+), 1 deletions(-)
>>>
>
>>> - * Returns 0 in case of success or -1 in case of error.
>>> + * Connections are reference counted; the connection is not actually
>>> + * closed until all calls to virConnectRef have had a matching
>>> + * virConnectClose call.
>>
>> Actually you need to match the virConnectOpen* call too. Interpreted
>> strictly it says that you only need to match the virConnectRef calls
>> which means that you don't have to call it when you didn't call
>> virConnectRef for a connection, doesn't it? Maybe just adding
>> appending a "too" to the sentence fixes this.
>>
>> The reference counting applies to vir(Domain|Network|...)Free too. But
>> this comment is missing that domain, network, etc objects that depend
>> on the connection take a reference on it too. So it's more complicated
>> than the comment implies. I'm not sure if we should explain this here.
>
> Hmm, good points. How about:
>
> Connections are reference counted; the count is explicitly increased by
> virConnectRef and virConnectOpen, as well as temporarily increased by
> other API that depend on the connection remaining alive. Every
> virConnectRef and virConnectOpen call should have a matching
> virConnectClose, and all other references will be released after the
> corresponding operation completes.
There is virConnectOpenReadOnly and virConnectOpenAuth too.
You're a bit vague about the "other API", but I think its better this
way than being too explicit and creating some kind of list that need
to be maintained here.
> The return value is the number of remaining references on success
> (positive implies that some other call still has a reference open, 0
> implies that no references remain and the connection is closed), or -1
> on failure. It is possible for the last virConnectClose to return a
> positive value if some other object still has a temporary reference to
> the connection, but the application should not try to further use a
> connection after the virConnectClose that matches the virConnectOpen.
ACK.
--
Matthias Bolte
http://photron.blogspot.com
More information about the libvir-list
mailing list