At 11:10 AM +0200 6/20/08, Anders wrote:
Johannes Berg <[EMAIL PROTECTED]> writes:

 On Fri, 2008-06-20 at 10:53 +0200, Anders wrote:

 I was puzzled that it was always 4398 seconds, in particular because
 this server runs an NTP daemon. A little searching for this problem
 shows that it is an issue with the Linux kernel gettimeofday(), see
 e.g. http://lkml.org/lkml/2007/8/23/96

 The thread puts it down to buggy hardware and puts a workaround into the
 kernel where it belongs, not in dovecot.

I think it is more accurate to say "hardware being used for a purpose its designers did not intend" instead. Using the TSC as a clock has been iffy for quite some time, and defaulting to it in the kernel is a risky design choice and must be implemented with extreme caution. It's not that the hardware is buggy,but rather that it does things by design that are not obvious from a high-level description.

That's not helpful.

By that line, the entire "time moved backwards" thing does not belong
in Dovecot.

I suspect that you don't understand why that is in Dovecot. Timo has explained it in detail a few times, but the bottom line is simple: running through the same system-clock time more than once induces a very real risk of destroying mail.

Anyway, I was not proposing the patch to be included, just asking for
advice as to whether it would be safe. I even noted that it was ugly.

"Safe" is subjective.
I think it would be safer (at the cost of a bounded amount of time) to nanosleep or maybe usleep once and retry the call rather than to go into the loop.

As I am already compiling Dovecot myself, I prefer a patch there,
rather than diverting from the distribution kernel.

You might even be better off configuring your system to not use the TSC as a clock source. There's a strong chance that you won't really be sacrificing anything that you actually use.

--
Bill Cole
[EMAIL PROTECTED]

Reply via email to