From: Miroslav Lichvar Date: Thu, 1 Aug 2019 09:47:18 +0000 (+0200) Subject: time-util: improve detection of synchronized clock X-Git-Tag: v243-rc2~69 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bca5a0eaccc849a669b4279e4bfcc6507083a07b;p=thirdparty%2Fsystemd.git time-util: improve detection of synchronized clock Instead of checking for the STA_UNSYNC flag in the timex status, check the maximum error. It is updated by the kernel, increasing at a rate of 500 ppm. The maximum value is 16 seconds, which triggers the STA_UNSYNC flag. This follows timedatex and allows timedated to correctly detect a clock synchronized by chronyd when configured to not synchronize the RTC. --- diff --git a/src/basic/time-util.c b/src/basic/time-util.c index e13361463be..3018e81acb8 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -1191,7 +1191,10 @@ bool ntp_synced(void) { if (adjtimex(&txc) < 0) return false; - if (txc.status & STA_UNSYNC) + /* Consider the system clock synchronized if the reported maximum error is smaller than the maximum + * value (16 seconds). Ignore the STA_UNSYNC flag as it may have been set to prevent the kernel from + * touching the RTC. */ + if (txc.maxerror >= 16000000) return false; return true;