On 27/11/2017 14:44, Michal Privoznik wrote:
On 11/27/2017 12:09 PM, Paolo Bonzini wrote:
> On 24/11/2017 19:13, Michal Privoznik wrote:
>> On 11/24/2017 06:18 PM, Paolo Bonzini wrote:
>>> On 24/11/2017 18:07, Michal Privoznik wrote:
>>>> The helper is going to be daemonized (for the same reason
>>>> that qemu process is) => there's no SIGCHLD for libvirtd to
receive.
>>>
>>> Couldn't (or shouldn't!) libvirt register itself as a subreaper
instead?
>>
>> Whether libvirt can't have a
>> separate thread where nothing waitpid() would run? That could hardly
>> work - not only would libvirt need to spawn separate thread for every
>> helper, it would not work across restarts of libvirtd. We would have no
>> guarantee that PID we recorded is still the same process as it was when
>> we were dying.
>
> Oh, you're right. :( Even if libvirtd were a subreaper (see prctl(2)
> manpage), the daemonized qemu-pr-helper would be reparented to init when
> libvirtd restarts.
>
> libvirtd could test whether the helper is alive by connecting to its
> socket. If that's not enough, I'll add an event.
Well, connecting and staying connected? Otherwise mere connect followed
by immediate disconnect would work only when libvirtd is starting up and
reconnecting to already running domains. Not if the helper dies some
time after libvirt started the domain and the helper. [1]
Ok, let's add the event and state command (to QEMU 2.12 only).
Thanks,
Paolo