[libvirt] [PATCH] drvbhyve: Automatically tear down guest domains on shutdown
Conrad Meyer
cse.cem at gmail.com
Thu Dec 4 14:12:33 UTC 2014
On Thu, Dec 4, 2014 at 5:18 AM, Michal Privoznik <mprivozn at redhat.com> wrote:
> On 14.11.2014 17:03, Conrad Meyer wrote:
>>
>> + status = kev.data;
>> + if (WIFSIGNALED(status) && WCOREDUMP(status)) {
>> + VIR_ERROR("Guest %s got signal %d and crashed", mon->vm->def->name,
>> + WTERMSIG(status));
>
> This needs to be virReportError(). And since you're doing gettext translations _() you need to change po/POTFILES.in too.
Sorry, I am pretty unfamiliar with gettext translations!
>
>> + virBhyveProcessStop(mon->driver, mon->vm,
>> + VIR_DOMAIN_SHUTOFF_CRASHED);
>> + } else if (WIFEXITED(status)) {
>> + if (WEXITSTATUS(status) == 0) {
>> + /* 0 - reboot */
>> + /* TODO: Implementing reboot is a little more complicated. */
>> + VIR_INFO("Guest %s rebooted; destroying domain.",
>> + mon->vm->def->name);
>> + virBhyveProcessStop(mon->driver, mon->vm,
>> + VIR_DOMAIN_SHUTOFF_SHUTDOWN);
>> + } else if (WEXITSTATUS(status) < 3) {
>> + /* 1 - shutdown, 2 - halt, 3 - triple fault. others - error */
>> + VIR_INFO("Guest %s shut itself down; destroying domain.",
>> + mon->vm->def->name);
>> + virBhyveProcessStop(mon->driver, mon->vm,
>> + VIR_DOMAIN_SHUTOFF_SHUTDOWN);
>> + } else {
>> + VIR_INFO("Guest %s had an error and exited with status %d; destroying domain.",
>> + mon->vm->def->name, WEXITSTATUS(status));
>> + virBhyveProcessStop(mon->driver, mon->vm,
>> + VIR_DOMAIN_SHUTOFF_UNKNOWN);
>> + }
>> + }
>> + }
>> +}
>
> ACKed with this squashed in:
>
> diff --git a/po/POTFILES.in b/po/POTFILES.in
> index f17b35f..d07b75a 100644
> --- a/po/POTFILES.in
> +++ b/po/POTFILES.in
> @@ -11,6 +11,7 @@ src/access/viraccessmanager.c
> src/bhyve/bhyve_command.c
> src/bhyve/bhyve_device.c
> src/bhyve/bhyve_driver.c
> +src/bhyve/bhyve_monitor.c
> src/bhyve/bhyve_process.c
> src/conf/capabilities.c
> src/conf/cpu_conf.c
> diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c
> index cd3cf6e..7f19c6e 100644
> --- a/src/bhyve/bhyve_monitor.c
> +++ b/src/bhyve/bhyve_monitor.c
> @@ -84,8 +84,10 @@ bhyveMonitorIO(int watch, int kq, int events ATTRIBUTE_UNUSED, void *opaque)
>
> status = kev.data;
> if (WIFSIGNALED(status) && WCOREDUMP(status)) {
> - VIR_ERROR("Guest %s got signal %d and crashed", mon->vm->def->name,
> - WTERMSIG(status));
> + virReportError(VIR_ERR_INTERNAL_ERROR,
> + _("Guest %s got signal %d and crashed"),
> + mon->vm->def->name,
> + WTERMSIG(status));
> virBhyveProcessStop(mon->driver, mon->vm,
> VIR_DOMAIN_SHUTOFF_CRASHED);
> } else if (WIFEXITED(status)) {
>
> Fixed and pushed.
>
> Michal
Thanks for fixing it up! Looks good to me.
Conrad
More information about the libvir-list
mailing list