diff --git a/qga/commands-posix.c b/qga/commands-posix.c index c2bd0b4316..47cee1c351 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -246,7 +246,7 @@ void qmp_guest_shutdown(const char *mode, Error **errp) return; } - const char *argv[] = {"/sbin/shutdown", + const char *argv[] = {"/run/current-system/sw/bin/shutdown", #ifdef CONFIG_SOLARIS shutdown_flag, "-g0", "-y", #elif defined(CONFIG_BSD) @@ -257,6 +257,10 @@ void qmp_guest_shutdown(const char *mode, Error **errp) "hypervisor initiated shutdown", (char *) NULL}; ga_run_command(argv, NULL, "shutdown", &local_err); + if (local_err) { + argv[0] = "/sbin/shutdown"; + ga_run_command(argv, NULL, "shutdown", &local_err); + } if (local_err) { error_propagate(errp, local_err); return; @@ -270,7 +274,7 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) int ret; Error *local_err = NULL; struct timeval tv; - const char *argv[] = {"/sbin/hwclock", has_time ? "-w" : "-s", NULL}; + const char *argv[] = {"/run/current-system/sw/bin/hwclock", has_time ? "-w" : "-s", NULL}; /* If user has passed a time, validate and set it. */ if (has_time) { @@ -303,6 +307,11 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns, Error **errp) * hardware clock (RTC). */ ga_run_command(argv, NULL, "set hardware clock to system time", &local_err); + if (local_err) { + argv[0] = "/sbin/hwclock"; + ga_run_command(argv, NULL, "set hardware clock to system time", + &local_err); + } if (local_err) { error_propagate(errp, local_err); return;