Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Sep 2019 16:05:31 -0600
From:      Ian Lepore <ian@freebsd.org>
To:        Alan Somers <asomers@freebsd.org>, Peter Holm <pho@freebsd.org>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all <svn-src-all@freebsd.org>, svn-src-head <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r352231 - head/lib/libc/sys
Message-ID:  <d7659322db6f0bf4bba7a569353e82f746998d93.camel@freebsd.org>
In-Reply-To: <CAOtMX2iqc3zLYG1d-dn2gVuFnA3hc9s68PVFhHxZGG0EUTs8qw@mail.gmail.com>
References:  <201909111948.x8BJmWZn092483@repo.freebsd.org> <63cf915c92b92b07e19337849269ec6bd0dc0d1b.camel@freebsd.org> <CAOtMX2iqc3zLYG1d-dn2gVuFnA3hc9s68PVFhHxZGG0EUTs8qw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2019-09-11 at 15:55 -0600, Alan Somers wrote:
> On Wed, Sep 11, 2019 at 3:50 PM Ian Lepore <ian@freebsd.org> wrote:
> 
> > On Wed, 2019-09-11 at 19:48 +0000, Alan Somers wrote:
> > > Author: asomers
> > > Date: Wed Sep 11 19:48:32 2019
> > > New Revision: 352231
> > > URL: https://svnweb.freebsd.org/changeset/base/352231
> > > 
> > > Log:
> > >   getsockopt.2: clarify that SO_TIMESTAMP is not 100% reliable
> > > 
> > >   When SO_TIMESTAMP is set, the kernel will attempt to attach a
> > 
> > timestamp as
> > >   ancillary data to each IP datagram that is received on the socket.
> > 
> > However,
> > >   it may fail, for example due to insufficient memory. In that case the
> > >   packet will still be received but not timestamp will be attached.
> > > 
> > >   Reviewed by:        kib
> > >   MFC after:  3 days
> > >   Differential Revision:      https://reviews.freebsd.org/D21607
> > > 
> > > Modified:
> > >   head/lib/libc/sys/getsockopt.2
> > > 
> > > Modified: head/lib/libc/sys/getsockopt.2
> > > 
> > 
> > ==============================================================================
> > > --- head/lib/libc/sys/getsockopt.2    Wed Sep 11 19:29:40 2019
> > 
> > (r352230)
> > > +++ head/lib/libc/sys/getsockopt.2    Wed Sep 11 19:48:32 2019
> > 
> > (r352231)
> > > @@ -28,7 +28,7 @@
> > >  .\"     @(#)getsockopt.2     8.4 (Berkeley) 5/2/95
> > >  .\" $FreeBSD$
> > >  .\"
> > > -.Dd February 10, 2019
> > > +.Dd September 11, 2019
> > >  .Dt GETSOCKOPT 2
> > >  .Os
> > >  .Sh NAME
> > > @@ -431,7 +431,8 @@ option is enabled on a
> > >  .Dv SOCK_DGRAM
> > >  socket, the
> > >  .Xr recvmsg 2
> > > -call will return a timestamp corresponding to when the datagram was
> > 
> > received.
> > > +call may return a timestamp corresponding to when the datagram was
> > 
> > received.
> > > +However, it may not, for example due to a resource shortage.
> > >  The
> > >  .Va msg_control
> > >  field in the
> > > 
> > 
> > So I guess this actually happened to someone... is it a common thing
> > for the timestamp to fail?  I ask because ntpd relies on SO_TIMESTAMP
> > and if this situation really happens and can persist for a long time,
> > ntpd would effectively stop working.
> > 
> > -- Ian
> > 
> 
> pho discovered how to trigger it.  If you start 50 ping processes
> simultaneously, sometimes a few will fail.  Will ntpd be ok with a single
> failure, as long as the timestamp is received correctly in a subsequent
> packet?
> -Alan

Yeah, nptd is resilient to missing data and intermittent comms, within
reason.  If it goes hours without getting a timestamp, system time
would start to drift.  Running 50 concurrent pings sounds like
something that won't come up in the real world. :)

-- Ian




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?d7659322db6f0bf4bba7a569353e82f746998d93.camel>