From 20c8ff7b565231d5105cbeb04960807a663c5426 Mon Sep 17 00:00:00 2001 Message-Id: <20c8ff7b565231d5105cbeb04960807a663c5426.1367947969.git.minovotn@redhat.com> In-Reply-To: <707b9b97153063374d2530e72c49b1499fc21af9.1367947969.git.minovotn@redhat.com> References: <707b9b97153063374d2530e72c49b1499fc21af9.1367947969.git.minovotn@redhat.com> From: Michal Novotny Date: Tue, 7 May 2013 18:36:46 +0200 Subject: [PATCH 018/114] Revert "qga: add guest-set-time command" This reverts commit 0700494470dbc388b3f1ee2e0985a29a08b0bf28. Reverting as asked by Laszlo in message <51892739.2030807@redhat.com> because of the ordering issue (most likely) related to supersed testing. Signed-off-by: Michal Novotny --- qapi-schema-guest.json | 26 ------------------------ qga/commands-posix.c | 55 -------------------------------------------------- qga/commands-win32.c | 5 ----- 3 files changed, 86 deletions(-) diff --git a/qapi-schema-guest.json b/qapi-schema-guest.json index 437d750..bb0f75e 100644 --- a/qapi-schema-guest.json +++ b/qapi-schema-guest.json @@ -96,32 +96,6 @@ 'returns': 'int' } ## -# @guest-set-time: -# -# Set guest time. -# -# When a guest is paused or migrated to a file then loaded -# from that file, the guest OS has no idea that there -# was a big gap in the time. Depending on how long the -# gap was, NTP might not be able to resynchronize the -# guest. -# -# This command tries to set guest time to the given value, -# then sets the Hardware Clock to the current System Time. -# This will make it easier for a guest to resynchronize -# without waiting for NTP. -# -# @time: time of nanoseconds, relative to the Epoch of -# 1970-01-01 in UTC. -# -# Returns: Nothing on success. -# -# Since: 1.5 -## -{ 'command': 'guest-set-time', - 'data': { 'time': 'int' } } - -## # @GuestAgentCommandInfo: # # Information about guest agent commands. diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 0a61ef2..4e0e01f 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -136,61 +136,6 @@ int64_t qmp_guest_get_time(Error **errp) return time_ns; } -void qmp_guest_set_time(int64_t time_ns, Error **errp) -{ - int ret; - int status; - pid_t pid; - Error *local_err = NULL; - struct timeval tv; - - /* year-2038 will overflow in case time_t is 32bit */ - if (time_ns / 1000000000 != (time_t)(time_ns / 1000000000)) { - error_setg(errp, "Time %" PRId64 " is too large", time_ns); - return; - } - - tv.tv_sec = time_ns / 1000000000; - tv.tv_usec = (time_ns % 1000000000) / 1000; - - ret = settimeofday(&tv, NULL); - if (ret < 0) { - error_setg_errno(errp, errno, "Failed to set time to guest"); - return; - } - - /* Set the Hardware Clock to the current System Time. */ - pid = fork(); - if (pid == 0) { - setsid(); - reopen_fd_to_null(0); - reopen_fd_to_null(1); - reopen_fd_to_null(2); - - execle("/sbin/hwclock", "hwclock", "-w", NULL, environ); - _exit(EXIT_FAILURE); - } else if (pid < 0) { - error_setg_errno(errp, errno, "failed to create child process"); - return; - } - - ga_wait_child(pid, &status, &local_err); - if (error_is_set(&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, "hwclock failed to set hardware clock to system time"); - return; - } -} - typedef struct GuestFileHandle { uint64_t id; FILE *fh; diff --git a/qga/commands-win32.c b/qga/commands-win32.c index 3e4fd2a..88fe5ba 100644 --- a/qga/commands-win32.c +++ b/qga/commands-win32.c @@ -284,11 +284,6 @@ int64_t qmp_guest_get_time(Error **errp) return -1; } -void qmp_guest_set_time(int64_t time_ns, Error **errp) -{ - error_set(errp, QERR_UNSUPPORTED); -} - /* register init/cleanup routines for stateful command groups */ void ga_command_state_init(GAState *s, GACommandState *cs) { -- 1.7.11.7