1
0
mirror of https://github.com/systemd/systemd synced 2024-07-01 07:34:28 +00:00

Revert "logs-show: use _SOURCE_MONOTONIC_TIMESTAMP when _SOURCE_BOOTTIME_TIMESTAMP field exists"

This reverts commit f5bdecba08.

Some kmsg sent before sleep may be received by systemd-journald after
sleep. In that case, map_clock_usec() does not provide correct
timestamp.
So, _SOURCE_MONOTONIC_TIMESTAMP field is anyway unreliable.
Let's not use the field.
This commit is contained in:
Yu Watanabe 2024-06-19 16:38:07 +09:00
parent 461e4656e7
commit 280e85224e

View File

@ -443,7 +443,6 @@ static void parse_display_realtime(
sd_journal *j,
const char *source_realtime,
const char *source_monotonic,
const char *source_boottime,
usec_t *ret) {
usec_t t, s, u;
@ -451,10 +450,8 @@ static void parse_display_realtime(
assert(j);
assert(ret);
if (!source_boottime)
/* _SOURCE_MONOTONIC_TIMESTAMP field is usable only when _SOURCE_BOOTTIME_TIMESTAMP exists,
* as previously the timestamp was in CLOCK_BOOTTIME. */
source_monotonic = NULL;
// FIXME: _SOURCE_MONOTONIC_TIMESTAMP is in CLOCK_BOOTTIME, hence we cannot use it for adjusting realtime.
source_monotonic = NULL;
/* First, try _SOURCE_REALTIME_TIMESTAMP. */
if (source_realtime && safe_atou64(source_realtime, &t) >= 0 && VALID_REALTIME(t)) {
@ -483,7 +480,6 @@ static void parse_display_timestamp(
sd_journal *j,
const char *source_realtime,
const char *source_monotonic,
const char *source_boottime,
dual_timestamp *ret_display_ts,
sd_id128_t *ret_boot_id) {
@ -495,10 +491,8 @@ static void parse_display_timestamp(
assert(ret_display_ts);
assert(ret_boot_id);
if (!source_boottime)
/* _SOURCE_MONOTONIC_TIMESTAMP field is usable only when _SOURCE_BOOTTIME_TIMESTAMP exists,
* as previously the timestamp was in CLOCK_BOOTTIME. */
source_monotonic = NULL;
// FIXME: _SOURCE_MONOTONIC_TIMESTAMP is in CLOCK_BOOTTIME, hence we cannot use it for adjusting realtime.
source_monotonic = NULL;
if (source_realtime && safe_atou64(source_realtime, &t) >= 0 && VALID_REALTIME(t))
source_ts.realtime = t;
@ -539,7 +533,7 @@ static int output_short(
_cleanup_free_ char *hostname = NULL, *identifier = NULL, *comm = NULL, *pid = NULL, *fake_pid = NULL,
*message = NULL, *priority = NULL, *transport = NULL,
*config_file = NULL, *unit = NULL, *user_unit = NULL, *documentation_url = NULL,
*realtime = NULL, *monotonic = NULL, *boottime = NULL;
*realtime = NULL, *monotonic = NULL;
size_t hostname_len = 0, identifier_len = 0, comm_len = 0, pid_len = 0, fake_pid_len = 0, message_len = 0,
priority_len = 0, transport_len = 0, config_file_len = 0,
unit_len = 0, user_unit_len = 0, documentation_url_len = 0;
@ -562,7 +556,6 @@ static int output_short(
PARSE_FIELD_VEC_ENTRY("DOCUMENTATION=", &documentation_url, &documentation_url_len),
PARSE_FIELD_VEC_ENTRY("_SOURCE_REALTIME_TIMESTAMP=", &realtime, NULL ),
PARSE_FIELD_VEC_ENTRY("_SOURCE_MONOTONIC_TIMESTAMP=", &monotonic, NULL ),
PARSE_FIELD_VEC_ENTRY("_SOURCE_BOOTTIME_TIMESTAMP=", &boottime, NULL ),
};
size_t highlight_shifted[] = {highlight ? highlight[0] : 0, highlight ? highlight[1] : 0};
@ -609,11 +602,11 @@ static int output_short(
audit = streq_ptr(transport, "audit");
if (IN_SET(mode, OUTPUT_SHORT_MONOTONIC, OUTPUT_SHORT_DELTA)) {
parse_display_timestamp(j, realtime, monotonic, boottime, &display_ts, &boot_id);
parse_display_timestamp(j, realtime, monotonic, &display_ts, &boot_id);
r = output_timestamp_monotonic(f, mode, &display_ts, &boot_id, previous_display_ts, previous_boot_id);
} else {
usec_t usec;
parse_display_realtime(j, realtime, monotonic, boottime, &usec);
parse_display_realtime(j, realtime, monotonic, &usec);
r = output_timestamp_realtime(f, j, mode, flags, usec);
}
if (r < 0)
@ -746,12 +739,11 @@ static int output_short(
static int get_display_realtime(sd_journal *j, usec_t *ret) {
const void *data;
_cleanup_free_ char *realtime = NULL, *monotonic = NULL, *boottime = NULL;
_cleanup_free_ char *realtime = NULL, *monotonic = NULL;
size_t length;
const ParseFieldVec message_fields[] = {
PARSE_FIELD_VEC_ENTRY("_SOURCE_REALTIME_TIMESTAMP=", &realtime, NULL),
PARSE_FIELD_VEC_ENTRY("_SOURCE_MONOTONIC_TIMESTAMP=", &monotonic, NULL),
PARSE_FIELD_VEC_ENTRY("_SOURCE_BOOTTIME_TIMESTAMP=", &boottime, NULL),
};
int r;
@ -763,13 +755,13 @@ static int get_display_realtime(sd_journal *j, usec_t *ret) {
if (r < 0)
return r;
if (realtime && monotonic && boottime)
if (realtime && monotonic)
break;
}
if (r < 0)
return r;
(void) parse_display_realtime(j, realtime, monotonic, boottime, ret);
(void) parse_display_realtime(j, realtime, monotonic, ret);
/* Restart all data before */
sd_journal_restart_data(j);