Internally log messages contain the timestamps relative to the Host boot time, while Container could start much later than the Host boots and the timestamps should be shifted accordingly.
Otherwise syslog() syscall reports incorrect timestamps. Note: * time_ns->offsets.boottime is (ve_uptime - host_uptime), i.e. negative for Containers created on this Host * ring buffer contains timestamps relative to the Host boot => we have to add the .boottime offset to the timestamp of Host to get the msg entry timestamp relative to Container boottime. Based on the vz7 commit b44b2f8707da ("syslog: Virtualize timestamps in the data reported") https://jira.sw.ru/browse/PSBM-145313 Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> --- kernel/printk/printk.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 9ba2fbfe8ccb..00381de5f262 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1341,7 +1341,12 @@ static size_t print_syslog(unsigned int level, char *buf) static size_t print_time(u64 ts, char *buf) { - unsigned long rem_nsec = do_div(ts, 1000000000); + unsigned long rem_nsec; + + /* shift the timestamp on the Container uptime value */ + ts = ve_timens_add_boottime_ns(ts); + + rem_nsec = do_div(ts, 1000000000); return sprintf(buf, "[%5lu.%06lu]", (unsigned long)ts, rem_nsec / 1000); -- 2.31.1 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel