diff options
author | Daniel Mack <github@zonque.org> | 2015-11-12 13:57:38 +0100 |
---|---|---|
committer | Daniel Mack <github@zonque.org> | 2015-11-12 13:57:38 +0100 |
commit | 1f920a33814552fb7ddfba52e62ac9cbdf8184fe (patch) | |
tree | b4e3d384216e3c88ab0a2b51d6b36cc933e3a97f /src/journal/journalctl.c | |
parent | aafdda22388a8a1b6966130ef4df0b59ee5fad72 (diff) | |
parent | 4de2402b603ea2f518f451d06f09e15aeae54fab (diff) |
Merge pull request #1863 from poettering/network-man
man patch fix, and port journalctl --sync to use CLOCK_MONOTONIC timestamp files
Diffstat (limited to 'src/journal/journalctl.c')
-rw-r--r-- | src/journal/journalctl.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index ac0751c547..75a48c761c 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1838,7 +1838,7 @@ static int send_signal_and_wait(int sig, const char *watch_path) { return -EOPNOTSUPP; } - start = now(CLOCK_REALTIME); + start = now(CLOCK_MONOTONIC); /* This call sends the specified signal to journald, and waits * for acknowledgment by watching the mtime of the specified @@ -1846,16 +1846,14 @@ static int send_signal_and_wait(int sig, const char *watch_path) { * then wait for the operation to complete. */ for (;;) { - struct stat st; + usec_t tstamp; /* See if a sync happened by now. */ - if (stat(watch_path, &st) < 0) { - if (errno != ENOENT) - return log_error_errno(errno, "Failed to stat %s: %m", watch_path); - } else { - if (timespec_load(&st.st_mtim) >= start) - return 0; - } + r = read_timestamp_file(watch_path, &tstamp); + if (r < 0 && r != -ENOENT) + return log_error_errno(errno, "Failed to read %s: %m", watch_path); + if (r >= 0 && tstamp >= start) + return 0; /* Let's ask for a sync, but only once. */ if (!bus) { @@ -1889,7 +1887,7 @@ static int send_signal_and_wait(int sig, const char *watch_path) { if (watch_fd < 0) return log_error_errno(errno, "Failed to create inotify watch: %m"); - r = inotify_add_watch(watch_fd, "/run/systemd/journal", IN_CREATE|IN_ATTRIB|IN_DONT_FOLLOW|IN_ONLYDIR); + r = inotify_add_watch(watch_fd, "/run/systemd/journal", IN_MOVED_TO|IN_DONT_FOLLOW|IN_ONLYDIR); if (r < 0) return log_error_errno(errno, "Failed to watch journal directory: %m"); |