[libvirt] [PATCH] libvirt: add daemon itself as shutdown reason

John Ferlan jferlan at redhat.com
Thu Nov 8 12:58:19 UTC 2018



On 11/8/18 2:03 AM, Nikolay Shirokovskiy wrote:
> 
> 
> On 07.11.2018 17:29, John Ferlan wrote:
>>
>>
>> On 10/8/18 7:21 AM, Nikolay Shirokovskiy wrote:
>>> Let's introduce shutdown reason "daemon" which means we have to
>>> kill running domain ourselves as the best action we can take at
>>> that moment. Failure to pick up domain on daemon restart is
>>> one example of such case. Using reason "crashed" is a bit misleading
>>> as it is used when qemu is actually crashed or qemu destroyed on
>>> guest panic as result of user choice that is the problem was
>>> in qemu/guest itself. So I propose to use "crashed" only for
>>> qemu side issues and introduce "daemon" when we have to kill the qemu
>>> for good.
>>>
>>> There is another example where "daemon" will be useful. If we can
>>> not reboot domain we kill it and got "crashed" reason now. Looks
>>> like good candidate for "daemon" reason.
>>>
>>> Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
>>> ---
>>>  include/libvirt/libvirt-domain.h |  1 +
>>>  src/conf/domain_conf.c           |  3 ++-
>>>  src/qemu/qemu_process.c          | 11 ++++-------
>>>  tools/virsh-domain-monitor.c     |  3 ++-
>>>  4 files changed, 9 insertions(+), 9 deletions(-)
>>>

[...]

>> @@ -8045,7 +8049,7 @@ qemuProcessReconnectHelper(virDomainObjPtr obj,
>>           * is no thread that could be doing anything else with the same
>> domain
>>           * object.
>>           */
>> -        qemuProcessStop(src->driver, obj, VIR_DOMAIN_SHUTOFF_FAILED,
>> +        qemuProcessStop(src->driver, obj, VIR_DOMAIN_SHUTOFF_DAEMON,
>>                          QEMU_ASYNC_JOB_NONE, 0);
> 
> I think we need to report VIR_DOMAIN_SHUTOFF_UNKNOWN here. This is similar to 
> qemuProcessReconnect before we try to reconnect. May be this hunk need to be 
> placed in distinct patch therefore.
> 

Perhaps keeping "FAILED" would be better - that way (and I can add this
to the qemuProcessReconnect description):

 * Failure to reconnect will generate the following reasons:
 *    VIR_DOMAIN_SHUTOFF_FAILED  => Tried to create this thread, but failed
 *    VIR_DOMAIN_SHUTOFF_UNKNOWN => Thread started, but failed before reconnect
 *                                  to the monitor
 *    VIR_DOMAIN_SHUTOFF_CRASHED => Attempted to reconnect to the monitor, but
 *                                  failed to open, assume domain crash
 *    VIR_DOMAIN_SHUTOFF_DAEMON  => Reconnected to the monitor, but decided
 *                                  afterwards we needed to stop the process

Look good?

Tks -

John


[...]




More information about the libvir-list mailing list