[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 3/7] qga/commands-posix: qmp_guest_shutdown: use ga_run_comman
From: |
Andrey Drobyshev |
Subject: |
[PATCH v4 3/7] qga/commands-posix: qmp_guest_shutdown: use ga_run_command helper |
Date: |
Wed, 20 Mar 2024 18:16:44 +0200 |
Also remove the G_GNUC_UNUSED attribute added in the previous commit from
the helper.
Signed-off-by: Andrey Drobyshev <andrey.drobyshev@virtuozzo.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
---
qga/commands-posix.c | 39 ++++++---------------------------------
1 file changed, 6 insertions(+), 33 deletions(-)
diff --git a/qga/commands-posix.c b/qga/commands-posix.c
index 9b1bdf194c..cb9eed9a0b 100644
--- a/qga/commands-posix.c
+++ b/qga/commands-posix.c
@@ -108,7 +108,6 @@ static ssize_t ga_pipe_read_str(int fd[2], char **str)
* sending string to stdin and taking error message from
* stdout/err.
*/
-G_GNUC_UNUSED
static int ga_run_command(const char *argv[], const char *in_str,
const char *action, Error **errp)
{
@@ -230,8 +229,6 @@ void qmp_guest_shutdown(const char *mode, Error **errp)
{
const char *shutdown_flag;
Error *local_err = NULL;
- pid_t pid;
- int status;
#ifdef CONFIG_SOLARIS
const char *powerdown_flag = "-i5";
@@ -260,46 +257,22 @@ void qmp_guest_shutdown(const char *mode, Error **errp)
return;
}
- pid = fork();
- if (pid == 0) {
- /* child, start the shutdown */
- setsid();
- reopen_fd_to_null(0);
- reopen_fd_to_null(1);
- reopen_fd_to_null(2);
-
+ const char *argv[] = {"/sbin/shutdown",
#ifdef CONFIG_SOLARIS
- execl("/sbin/shutdown", "shutdown", shutdown_flag, "-g0", "-y",
- "hypervisor initiated shutdown", (char *)NULL);
+ shutdown_flag, "-g0", "-y",
#elif defined(CONFIG_BSD)
- execl("/sbin/shutdown", "shutdown", shutdown_flag, "+0",
- "hypervisor initiated shutdown", (char *)NULL);
+ shutdown_flag, "+0",
#else
- execl("/sbin/shutdown", "shutdown", "-h", shutdown_flag, "+0",
- "hypervisor initiated shutdown", (char *)NULL);
+ "-h", shutdown_flag, "+0",
#endif
- _exit(EXIT_FAILURE);
- } else if (pid < 0) {
- error_setg_errno(errp, errno, "failed to create child process");
- return;
- }
+ "hypervisor initiated shutdown", (char *) NULL};
- ga_wait_child(pid, &status, &local_err);
+ ga_run_command(argv, NULL, "shutdown", &local_err);
if (local_err) {
error_propagate(errp, local_err);
return;
}
- if (!WIFEXITED(status)) {
- error_setg(errp, "child process has terminated abnormally");
- return;
- }
-
- if (WEXITSTATUS(status)) {
- error_setg(errp, "child process has failed to shutdown");
- return;
- }
-
/* succeeded */
}
--
2.39.3
- [PATCH v4 0/7] qga/commands-posix: replace code duplicating commands with a helper, Andrey Drobyshev, 2024/03/20
- [PATCH v4 2/7] qga: introduce ga_run_command() helper for guest cmd execution, Andrey Drobyshev, 2024/03/20
- [PATCH v4 1/7] qga: guest-get-fsinfo: add optional 'total-bytes-privileged' field, Andrey Drobyshev, 2024/03/20
- [PATCH v4 6/7] qga/commands-posix: don't do fork()/exec() when suspending via sysfs, Andrey Drobyshev, 2024/03/20
- [PATCH v4 7/7] qga/commands-posix: qmp_guest_set_user_password: use ga_run_command helper, Andrey Drobyshev, 2024/03/20
- [PATCH v4 5/7] qga/commands-posix: execute_fsfreeze_hook: use ga_run_command helper, Andrey Drobyshev, 2024/03/20
- [PATCH v4 3/7] qga/commands-posix: qmp_guest_shutdown: use ga_run_command helper,
Andrey Drobyshev <=
- [PATCH v4 4/7] qga/commands-posix: qmp_guest_set_time: use ga_run_command helper, Andrey Drobyshev, 2024/03/20