From: David Newall <davidn@davidnewall.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: Nick Andrew <nick@nick-andrew.net>,
Linas Vepstas <linasvepstas@gmail.com>,
david@lang.hm, Kyle Moffett <kyle@moffetthome.net>,
Ben Goodger <goodgerster@gmail.com>,
Robert Hancock <hancockr@shaw.ca>,
linux-kernel@vger.kernel.org,
"Jeffrey J. Kosowsky" <jeff@kosowsky.org>,
MentalMooMan <slashdot@jameshallam.info>,
Travis Crump <pretzalz@techhouse.org>,
burdell@iruntheinter.net
Subject: Re: Bug: Status/Summary of slashdot leap-second crash on new years 2008-2009
Date: Sat, 10 Jan 2009 20:16:02 +1030 [thread overview]
Message-ID: <49686E5A.6040000@davidnewall.com> (raw)
In-Reply-To: <20090107154035.3fce1c07@lxorguk.ukuu.org.uk>
Alan Cox wrote:
>> Is there a mktime() in the kernel? Isn't it pure user-space? Mktime
>> does appear to know all about leap seconds (assuming they're in zoneinfo.)
>>
>
> The GPL goes to great trouble to ensure you get the kernel source code.
> Why not use it.
>
Okay. I'm not sure how long you have realised that two, completely
different mktimes have been confused with each other, but surely longer
than me.
The kernel mktime, as far as I can tell without spending a week on it,
is used only on some platforms, during startup to read and set real time
clocks and alarms. Where it matters is RTC ioctls which, tragically, I
think, are passed a struct rtc_time. They should be passed a time_t or
struct timeval because these are what's used everywhere else that I can
think of, between kernel and user-space.
Ideally, struct rtc_time should be deprecated in favour of time_t.
Changes to user-space programs should be trivial; probably, they
currently look like
{ struct rtc_time *rt = gmtime(&t); ioctl(fd, RTC_xxx, rt); }
This is not going to happen without a huge song and dance, which I
certainly don't have the energy for. I think it makes no practical
difference, and only affects how tidy the kernel looks. Assuming
leap-seconds are properly configured if zoneinfo, user-space programs
which use gmtime() to set the RTC will run it fast by the current number
of leap-seconds. However the RTC will continue to advance by one second
per second, and being that fast, mktime will produce the correct time_t
when RTC is read back. This will eventually cause a real problem with
RTCs that handle leap years. When we have 4 years worth of
leap-seconds, or maybe its 96 years worth, the RTC will be set for a
leap-year when it is not, or vice versa. That's a long time away.
It's something of a farce that some systems crashed at the leap-second
because no adjustment was needed. Trying to turn two seconds into one
was a mistake. I gather the mistake is in the NTP client, which should
just ignore the LEAP-SECOND bit, and use the leap-second information
from zoneinfo to convert from the NTP timebase to Linux's.
>> showing "#15 0xffffffff8104ec16 in ntp_leap_second (timer=<value
>> optimized out>) at kernel/time/ntp.c:143". That would be kernel code to
>> process leap seconds from NTP broadcasts, I think. That code needs to
>> be removed.
>>
>
> I suggest you read that code and understand it.
>
Well, there's rather a lot wrong with it, isn't there? All of the stuff
that tries to handle leap seconds is wrong; that goes for timex.h, too.
The kernel needs to do nothing special to handle leap-seconds; they're
just seconds, like every other one.
For the third time, this code has to come out.
next prev parent reply other threads:[~2009-01-10 9:46 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-02 19:25 Bug: Status/Summary of slashdot leap-second crash on new years 2008-2009 Linas Vepstas
2009-01-02 20:04 ` Diego Calleja
2009-01-02 20:25 ` Robert Hancock
2009-01-03 6:32 ` David Newall
2009-01-03 6:37 ` Ben Goodger
2009-01-04 8:43 ` David Newall
2009-01-04 9:00 ` Kyle Moffett
2009-01-04 10:03 ` David Newall
2009-01-04 11:13 ` david
2009-01-04 23:15 ` David Newall
2009-01-04 23:25 ` Chris Adams
2009-01-05 0:01 ` David Newall
2009-01-05 0:41 ` Alan Cox
2009-01-05 8:43 ` David Newall
2009-01-05 19:47 ` Alan Cox
2009-01-05 0:29 ` david
2009-01-04 23:37 ` David Newall
2009-01-05 1:05 ` david
2009-01-05 0:14 ` David Newall
2009-01-05 0:21 ` Ben Goodger
2009-01-05 6:34 ` David Newall
2009-01-05 23:03 ` Linas Vepstas
2009-01-05 0:44 ` Alan Cox
2009-01-05 5:48 ` Linas Vepstas
2009-01-05 14:33 ` Nick Andrew
2009-01-05 16:08 ` Linas Vepstas
2009-01-05 17:51 ` david
2009-01-05 17:42 ` Linas Vepstas
2009-01-06 2:27 ` john stultz-lkml
2009-01-06 4:53 ` Linas Vepstas
2009-01-06 5:00 ` Linas Vepstas
2009-01-06 19:40 ` [ntpwg] " M. Warner Losh
2009-01-06 19:50 ` M. Warner Losh
2009-01-07 3:50 ` Danny Mayer
2009-01-07 4:52 ` Linas Vepstas
2009-01-07 10:03 ` David Newall
2009-01-07 17:24 ` M. Warner Losh
2009-01-08 16:51 ` Magnus Danielson
2009-01-07 14:34 ` Danny Mayer
2009-01-07 15:42 ` Linas Vepstas
2009-01-07 19:23 ` Danny Mayer
2009-01-07 16:04 ` john stultz
2009-01-07 17:36 ` M. Warner Losh
2009-01-07 17:39 ` M. Warner Losh
2009-01-07 19:31 ` Alan Cox
2009-01-07 19:42 ` M. Warner Losh
2009-01-08 3:57 ` Danny Mayer
2009-01-08 4:42 ` M. Warner Losh
2009-01-08 10:48 ` Alan Cox
2009-01-08 10:56 ` Alan Cox
2009-01-08 22:22 ` David Mills
2009-01-08 15:02 ` M. Warner Losh
2009-01-08 18:57 ` Marshall Eubanks
2009-01-08 20:09 ` Steve Allen
2009-01-12 16:11 ` Pavel Machek
2009-01-12 17:07 ` [ntpwg] " M. Warner Losh
2009-01-12 21:45 ` Valdis.Kletnieks
2009-01-06 2:31 ` Nick Andrew
2009-01-06 1:59 ` David Newall
2009-01-06 2:18 ` Chris Adams
2009-01-06 2:51 ` Nick Andrew
2009-01-06 9:40 ` Alan Cox
2009-01-07 1:17 ` Nick Andrew
2009-01-07 9:37 ` Alan Cox
2009-01-07 9:46 ` David Newall
2009-01-07 9:54 ` Alan Cox
2009-01-07 10:18 ` David Newall
2009-01-07 10:52 ` Alan Cox
2009-01-07 13:45 ` David Newall
2009-01-07 14:10 ` Alan Cox
2009-01-07 14:36 ` David Newall
2009-01-07 15:40 ` Alan Cox
2009-01-10 9:46 ` David Newall [this message]
2009-01-07 22:13 ` Chris Adams
2009-01-07 13:33 ` Chris Adams
2009-01-07 13:37 ` Alan Cox
2009-01-07 14:12 ` David Newall
2009-01-07 14:09 ` David Newall
2009-01-07 21:42 ` Chris Adams
2009-01-04 11:35 ` Valdis.Kletnieks
2009-01-05 0:08 ` David Newall
2009-01-06 3:53 ` Valdis.Kletnieks
2009-01-04 17:20 ` Kyle Moffett
2009-01-03 7:00 ` Chris Adams
2009-01-04 8:41 ` David Newall
2009-01-02 20:29 ` Linas Vepstas
[not found] ` <8752a8760901021328t545a0327v58faebe1e921680a@mail.gmail.com>
2009-01-02 21:29 ` Ben Goodger
2009-01-03 0:21 ` Chris Adams
2009-01-03 2:23 ` Duane Griffin
2009-01-03 3:45 ` Linas Vepstas
2009-01-03 4:41 ` [PATCH] " Chris Adams
2009-01-03 4:52 ` Duane Griffin
2009-01-03 18:01 ` [PATCH] v2 " Chris Adams
2009-01-03 19:04 ` Duane Griffin
2009-01-03 20:01 ` Linas Vepstas
2009-06-08 2:18 ` Ben Hutchings
2009-06-18 22:34 ` Chris Friesen
2009-06-18 22:58 ` Ben Hutchings
2009-06-18 23:48 ` Chris Friesen
2009-01-06 2:21 ` john stultz-lkml
2009-01-06 2:25 ` Chris Adams
2009-01-06 4:35 ` Linas Vepstas
2009-01-03 3:49 ` Linas Vepstas
2009-01-03 4:02 ` Ben Goodger
2009-01-03 4:46 ` Duane Griffin
2009-01-03 4:50 ` Ben Goodger
2009-01-03 22:58 ` Jeffrey J. Kosowsky
[not found] <fa.dw2l5ZM+UL3xoF6IYh5RLMmbYfw@ifi.uio.no>
[not found] ` <fa.XOM1F85uBvmj4QzZKaDu36nYBk0@ifi.uio.no>
[not found] ` <fa.rviZJBmVqkAE5uxDjhJOpIuKT4g@ifi.uio.no>
[not found] ` <fa.OPVERUiJ763jH2/QynTxgBgoKYw@ifi.uio.no>
[not found] ` <fa.v3FUjJ43bw2G7KiZGaxqL3tD4xo@ifi.uio.no>
[not found] ` <fa.BrNhgY8S+TEOLMiPd27M7YHo9bI@ifi.uio.no>
2009-01-04 16:15 ` Sitsofe Wheeler
2009-01-04 17:26 ` Kyle Moffett
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49686E5A.6040000@davidnewall.com \
--to=davidn@davidnewall.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=burdell@iruntheinter.net \
--cc=david@lang.hm \
--cc=goodgerster@gmail.com \
--cc=hancockr@shaw.ca \
--cc=jeff@kosowsky.org \
--cc=kyle@moffetthome.net \
--cc=linasvepstas@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nick@nick-andrew.net \
--cc=pretzalz@techhouse.org \
--cc=slashdot@jameshallam.info \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.