From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:46961) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLysM-00062l-BG for qemu-devel@nongnu.org; Thu, 03 Nov 2011 11:06:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RLysL-0000cl-20 for qemu-devel@nongnu.org; Thu, 03 Nov 2011 11:06:42 -0400 Received: from mail-qy0-f173.google.com ([209.85.216.173]:49674) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLysK-0000cf-S4 for qemu-devel@nongnu.org; Thu, 03 Nov 2011 11:06:40 -0400 Received: by qyk30 with SMTP id 30so4290706qyk.4 for ; Thu, 03 Nov 2011 08:06:40 -0700 (PDT) Message-ID: <4EB2ADFC.20404@codemonkey.ws> Date: Thu, 03 Nov 2011 10:06:36 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1320325691-9465-1-git-send-email-bjorn@mork.no> In-Reply-To: <1320325691-9465-1-git-send-email-bjorn@mork.no> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH] os-posix: call system_powerdown on SIGTERM, enabling clean guest shutdown List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?QmrDuHJuIE1vcms=?= Cc: qemu-devel@nongnu.org On 11/03/2011 08:08 AM, Bjørn Mork wrote: > Allow well behaved guests to shutdown cleanly when we receive SIGTERM, > e.g. when the host reboots. > > The host may be powered down or rebooted while guests are running > without any outer supervision scripts. These guests will be stopped > by the generic host "sendsigs" script, usually by sending SIGTERM to all > processes still running and then SIGKILL if that didn't work. Let the > guest power down instead of just killing i instantly. > > Signed-off-by: Bjørn Mork I don't think this is such a good idea. SIGTERM shouldn't be subject to the guest's interpretations. Instead of doing a killall qemu, just send a system_powerdown command to each qemu's monitor instance. Regards, Anthony Liguori > --- > I wonder if I miss something obvious here... So this patch should be > considered a RFC. It certainly fixes a small problem for me: I often > run a number of guests which are started manually, or by simple "runme" > scripts, without any libvirt wrapper or similar. If/when the host is > rebooted, these guests will be shut down abrubtly with possible guest > file system corruption and other data loss as a consequence. Powering > down on SIGTERM seems like an obious win-win. > > I also wonder if it would be useful to do a reboot on HUP, but that > wouldn't solve any real problem so I'm not including it in this > patch. > > > > Bjørn > > os-posix.c | 5 ++++- > 1 files changed, 4 insertions(+), 1 deletions(-) > > diff --git a/os-posix.c b/os-posix.c > index dbf3b24..167fd3b 100644 > --- a/os-posix.c > +++ b/os-posix.c > @@ -65,7 +65,10 @@ void os_setup_early_signal_handling(void) > > static void termsig_handler(int signal, siginfo_t *info, void *c) > { > - qemu_system_killed(info->si_signo, info->si_pid); > + if (info->si_signo == SIGTERM) > + qemu_system_powerdown_request(); > + else > + qemu_system_killed(info->si_signo, info->si_pid); > } > > void os_setup_signal_handling(void)