From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53698) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VeFaz-0003oX-Un for qemu-devel@nongnu.org; Wed, 06 Nov 2013 21:45:27 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VeFau-0000G7-7b for qemu-devel@nongnu.org; Wed, 06 Nov 2013 21:45:21 -0500 Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes References: <527A09E4.7090605@msgid.tls.msk.ru> Date: Thu, 07 Nov 2013 11:45:25 +0900 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: whitearchey Message-ID: In-Reply-To: <527A09E4.7090605@msgid.tls.msk.ru> Subject: Re: [Qemu-devel] [PATCH] qga: Fix shutdown command of guest agent to work with SysV List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Michael Tokarev Cc: "qemu-trivial@nongnu.org" , qemu-devel On Wed, 06 Nov 2013 18:20:36 +0900, Michael Tokarev wrote: > 06.11.2013 05:54, whitearchey wrote: >> For now guest agent uses following command to shutdown system: >> shutdown -P +0 "blabla" >> but this syntax works only with shutdown command from systemd or upstart, >> because SysV shutdown requires -h switch. >> >> Following patch changes the command so it works with systemd, upstart and SysV > > While the patch is one-liner indeed, it is a bit more than trivial. > Because it changes things in a non-obvious way, especially when > multiple systems are concerned. Cc'ing qemu-devel@ due to this. > >> --- a/qga/commands-posix.c >> +++ b/qga/commands-posix.c >> - execle("/sbin/shutdown", "shutdown", shutdown_flag, "+0", >> + execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0", > > Note that shutdown command is not in POSIX, despite the fact > that this is put into commands-posix.c > > Note also that even shutdown from sysvinit on linux has another > option, -P, which mean poweroff, while -h means "halt OR poweroff" > (the latter is a bit unclear). With upstart/systemd qga use one of thee commands, depending on 'mode' parameter: shutdown -P +0 "..." shutdown -H +0 "..." shutdown -r +0 "..." SysV equivalents for these are: shutdown -h -P +0 "..." shutdown -h -H +0 "..." shutdown -h -r +0 "..." and these retain their meaning with upstart/systemd. > > Does the same work on other *nixes? *BSD? Solaris? > No, it doesn't. But existing code also does not work. According to FreeBSD manpages, shutdown does not accept -P and -H options. Commands should be: shutdown -p +0 "..." shutdown -h +0 "..." shutdown -r +0 "..." shutdown in Solaris does not accept any of -hHpPr and does not accept time in "+0" format > Thanks, > > /mjt