[libvirt] [PATCH] bhyve: implement domainShutdown

Laine Stump laine at laine.org
Tue Mar 29 14:52:09 UTC 2016


On 03/29/2016 08:24 AM, Daniel P. Berrange wrote:
> On Mon, Mar 28, 2016 at 10:27:18AM +0300, Roman Bogorodskiy wrote:
>> Bhyve supports ACPI shutdown by issuing SIGTERM signal to the bhyve
>> process. Add the bhyveDomainShutdown() function and
>> virBhyveProcessShutdown() helper function that just sends SIGTERM to
>> VM's bhyve process. If a guest supports ACPI shutdown then process
>> will be terminated and this event will be noticed by the bhyve monitor
>> code that will handle setting proper status and clean up VM's resources.
>>
>> Also, remove a warning in domainDestroy in case if
>> virProcessKillPainfully() returns 1, meaning that it killed process
>> using SIGKILL. This behavior should be expected when using 'destroy'.
> Hmm, so destroy is supposed to be equivalent to physically removing
> the power plug.  The existing code is calling virProcessShutdownPainfully
> which starts by sending SIGTERM and then switches to SIGKILL.  So this
> means that your virDomainDestroy implementation is mistakenly trying todo
> a graceful shutdown initially and then switching to hard shutdown after a
> bit of a delay.

For context - the qemu driver does this for destroy as well. I think at 
least one of the reasons is to allow the qemu process to flush the 
buffers for the disk image files. I recall this was causing some amount 
of pain for ovirt (or maybe someone else, I forget)


>
> Has bhyve always used SIGTERM to trigger ACPI shutdown, or is this a
> recent addition ?  I would tend to suggest we need to go straight to
> SIGKILL for virDomainDestroy to avoid doing ACPI shutdown when we don't
> want it.
>
> It is kind of a shame they used SIGTERM for triggering ACPI imho but
> oh well.

Yes, it means there is no way to implement a "clean power off" (which 
would give bhyve the chance to clean up some critical things before 
pulling the plug).





More information about the libvir-list mailing list