[libvirt] [PATCH] qemu: Check for existence of auto-generated socket path before removing

John Ferlan jferlan at redhat.com
Wed Sep 16 13:43:02 UTC 2015



On 09/16/2015 09:05 AM, Michal Privoznik wrote:
> On 15.09.2015 23:03, John Ferlan wrote:
>> Commit id 'f1f68ca33' added code to remove the directory paths for
>> auto-generated sockets, but that code could be called before the
>> paths were created resulting in generating error messages from
>> virFileDeleteTree indicating that the file doesn't exist. So just
>> add a check before attemping the directory delete for existence.
>>
>> Signed-off-by: John Ferlan <jferlan at redhat.com>
>> ---
>>  src/qemu/qemu_process.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
>> index ce2c70c..b55eb52 100644
>> --- a/src/qemu/qemu_process.c
>> +++ b/src/qemu/qemu_process.c
>> @@ -5269,13 +5269,13 @@ void qemuProcessStop(virQEMUDriverPtr driver,
>>  
>>      ignore_value(virAsprintf(&tmppath, "%s/domain-%s",
>>                               cfg->libDir, vm->def->name));
>> -    if (tmppath)
>> +    if (tmppath && virFileExists(tmppath))
>>          virFileDeleteTree(tmppath);
>>      VIR_FREE(tmppath);
>>  
>>      ignore_value(virAsprintf(&tmppath, "%s/domain-%s",
>>                               cfg->channelTargetDir, vm->def->name));
>> -    if (tmppath)
>> +    if (tmppath && virFileExists(tmppath))
>>          virFileDeleteTree(tmppath);
>>      VIR_FREE(tmppath);
>>  
>>
> 
> Okay, so this is needed so that we don't taint logs with useless error
> messages. ACK to the idea. But what what about moving virFileExists into
> virFileDeleteTree? The reason for that would be that I like functions
> which deals with dummy arguments. In this case it would be:
> 
> virFileDeleteTree("/some/nonexistent/path");
> virFileDeleteTree(NULL);
> 
> But if you dislike the idea, ACK to this patch then. There's nothing
> wrong with it.
> 
Correct with your assertion - I saw the messages while debugging
something else (error validating something during qemu_command creation):

2015-09-15 14:18:40.197+0000: 28838: error : virFileDeleteTree:945 :
Cannot open dir '/var/lib/libvirt/qemu/domain-test': No such file or
directory
2015-09-15 14:18:40.197+0000: 28838: error : virFileDeleteTree:945 :
Cannot open dir '/var/lib/libvirt/qemu/channel/target/domain-test': No
such file or directory

and that was after the error I was expecting...  Since it was 'new' I
knew it was a recent change...

Anyway, I took the chisel approach rather than the sledgehammer, but I
see your point. Up to this point it seems the function was primarily
called from *test.c modules and those that weren't sure if 'path' could
be NULL prior to call would always check. I'll post a different patch
with the check in virFileDeleteTree() and of course remove the NULL
checks in the *test.c modules.

John




More information about the libvir-list mailing list