[libvirt] [PATCH] daemon: Unlink unix sockets at daemon shutdown

Osier Yang jyang at redhat.com
Wed Jul 27 09:55:35 UTC 2011


于 2011年07月27日 17:51, Daniel P. Berrange 写道:
> On Wed, Jul 27, 2011 at 05:34:19PM +0800, Osier Yang wrote:
>> 于 2011年07月27日 18:07, Osier Yang 写道:
>>> ---
>>>   daemon/libvirtd.c |    6 ++++++
>>>   1 files changed, 6 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
>>> index 9e044e2..61f5a2d 100644
>>> --- a/daemon/libvirtd.c
>>> +++ b/daemon/libvirtd.c
>>> @@ -1572,6 +1572,12 @@ cleanup:
>>>       if (pid_file)
>>>           unlink (pid_file);
>>>
>>> +    if (sock_file&&  sock_file[0] != '@')
>>> +        unlink(sock_file);
>>> +
>>> +    if (sock_file_ro&&  sock_file_ro[0] != '@')
>>> +        unlink(sock_file_ro);
>>> +
> NACK to this - cleanup should be done in the RPC classes
>
>> With this patch, the socket files could be removed successfully.
>>
>> But it looks to me virNetSocketFree already unlink the socket files,
>> it's weired
>> the unix socket files still exists after daemon shutdown. So, this patch
>> might be
>> not quite right.
> Yes, that suggests that virNetServerFree or something that
> it calls is not cleaning up properly. It could be a missing
> free somewhere, or a reference being held open.
>

It looks to me the "ref" is right from the debug log, (not missed 
somewehre).

> It might be desirable to add an explicit virNetServerClose()
> API which closes all sockets&  unlinks them, separately
> from virNetServerFree, so we ensure cleanup even in the event
> of a reference count being leaked

Yes, agree.

> Daniel




More information about the libvir-list mailing list