diff options
author | whitearchey <whitearchey@gmail.com> | 2013-11-06 10:54:04 +0900 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2013-11-16 14:04:45 +0400 |
commit | 485e741cd15655b4032b07b8a912aa5c7a4f2028 (patch) | |
tree | 2cc77f3bdf284f381ab80c190cee979492da1418 /qga | |
parent | 3325a83627de3e3bd9a97548f13bbb53b354d970 (diff) | |
download | hqemu-485e741cd15655b4032b07b8a912aa5c7a4f2028.zip hqemu-485e741cd15655b4032b07b8a912aa5c7a4f2028.tar.gz |
qga: Fix shutdown command of guest agent to work with SysV
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
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.
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
Signed-off-by: Michael Avdienko <whitearchey@gmail.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Diffstat (limited to 'qga')
-rw-r--r-- | qga/commands-posix.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/qga/commands-posix.c b/qga/commands-posix.c index f453132..10682f5 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -99,7 +99,7 @@ void qmp_guest_shutdown(bool has_mode, const char *mode, Error **err) reopen_fd_to_null(1); reopen_fd_to_null(2); - execle("/sbin/shutdown", "shutdown", shutdown_flag, "+0", + execle("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0", "hypervisor initiated shutdown", (char*)NULL, environ); _exit(EXIT_FAILURE); } else if (pid < 0) { |