Subject: Re: nfs+tcp boot failures on linuxnext-20180924 from switch tcp_clock_ns to CLOCK_TAI

From: Eric Dumazet <[email-masked]>
Date: Wed, 26 Sep 2018 19:18:28 -0700

On 09/26/2018 06:15 PM, Leonard Crestez wrote:
> Hello,
>  
> It seems that after commit 72b0094f9182 ("tcp: switch tcp_clock_ns() to
> CLOCK_TAI base") some systems that use nfs over tcp fail to boot. The
> last line printed in the log is from systemd:
>  
> [    7.232579] systemd[1]: System time before build time, advancing clock.
>  
> Superficially it looks like very large clock discontinuities now break
> TCP. Maybe boottime could avoid such issues?
>  
> I didn't find similar reports anywhere else. The machines I’m seeing
> this are all 32bit arm imx (this shouldn’t matter) and it seems their
> RTC isn’t properly setup so they boot with realtime set to unix zero,
> then a ~50 years jump happens when systemd starts up. This is the
> likely trigger for this issue.
>  

Thanks for the report.

It is annoying, because SCM_TXTIME and net/sched/sch_etf.c are using CLOCK_TAI,
so it means that if we convert TCP (and net/sched/sch_fq.c) back to ktime_get_ns(),
we will have to differentiate in skbs the clock base.

This has been discussed in the past (When ETF was merged in 4.19) and we chose
to use a common clock base.