[libvirt PATCH 1/6] slirp: leave the dbus daemon running on error

Michal Privoznik mprivozn at redhat.com
Tue Apr 21 17:41:57 UTC 2020


On 4/21/20 6:50 PM, Marc-André Lureau wrote:
> Hi
> 
> On Tue, Apr 21, 2020 at 6:04 PM Michal Privoznik <mprivozn at redhat.com> wrote:
>>
>> On 4/8/20 7:23 PM, marcandre.lureau at redhat.com wrote:
>>> From: Marc-André Lureau <marcandre.lureau at redhat.com>
>>>
>>> Don't stop the DBus daemon if a slirp helper failed to start, as it
>>> may be shared with other helpers.
>>>
>>> Signed-off-by: Marc-André Lureau <marcandre.lureau at redhat.com>
>>> ---
>>>    src/qemu/qemu_slirp.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/src/qemu/qemu_slirp.c b/src/qemu/qemu_slirp.c
>>> index 09c1247892..49bffa01b8 100644
>>> --- a/src/qemu/qemu_slirp.c
>>> +++ b/src/qemu/qemu_slirp.c
>>> @@ -355,6 +355,6 @@ qemuSlirpStart(qemuSlirpPtr slirp,
>>>            virProcessKillPainfully(pid, true);
>>>        if (pidfile)
>>>            unlink(pidfile);
>>> -    qemuDBusStop(driver, vm);
>>> +    /* leave dbus daemon running, it may be used by others */
>>>        return -1;
>>>    }
>>>
>>
>> I'm not quite sure about this one. Who do you mean by "others"? Other
> 
> Other users of DBus. For now, it's only slirp-helper, but there can be
> already multiple instances.

Ah, I've misunderstood this part. But if there is only one user of the 
DBus (us who are trying to start it now), shouldn't we kill the dbus 
daemon? On the other hand, it will be done by qemuProcessStop() 
eventually. My idea was to track whether the dbus daemon is running 
prior starting it (basically save priv->dbusDaemonRunning before calling 
qemuDBusStart() and then wrap this qemuDBusStop() with 'if 
(was_started)'. I can do the change before push, if you are okay with 
it. I just like functions to tidy up on failure, maybe it's just an 
obsession though.

Michal




More information about the libvir-list mailing list