From: Ed Cashin <ed.cashin@acm.org>
To: Arnd Bergmann <arnd@arndb.de>, y2038@lists.linaro.org
Cc: Tina Ruchandani <ruchandani.tina@gmail.com>,
linux-kernel@vger.kernel.org
Subject: Re: [Y2038] [PATCH] aoe: Use 64-bit timestamp in frame
Date: Tue, 12 May 2015 21:23:04 -0400 [thread overview]
Message-ID: <5552A778.6070603@acm.org> (raw)
In-Reply-To: <2349651.fBUtehr528@wuerfel>
On 05/12/2015 07:14 AM, Arnd Bergmann wrote:
> On Tuesday 12 May 2015 11:44:21 Arnd Bergmann wrote:
>> There are of course multiple ways to do this. One way would be to
>> change the code to work on 32-bit nanoseconds instead of 32-bit
>> microseconds. This requires proving that the we cannot exceed
>> 4.29 seconds of round-trip time in calc_rttavg().
>> Is that a valid assumption or not?
>>
>> If not, we could replace do_gettimeofday() with ktime_get_ts64().
>> This will ensure we don't need a 64-bit division when converting
>> the ts64 to a 32-bit microsecond value, and combined with the
>> conversion is still no slower than do_gettimeofday(), and it
>> still avoids the double bookkeeping because it uses a monotonic
>> timebase that is robust against settimeofday.
> Two other approaches that occurred to me later:
>
> - introduce common ktime_get_ms(), ktime_get_us(), ktime_get_real_ms()
> and ktime_get_real_is() interfaces, to match the other interfaces
> we already provide. These could be done as efficiently or better
> than what aoe does manually today.
>
> - change the timebase that is used for the computations in aoe to use
> scaled nanoseconds instead of microseconds. Using
>
> u32 time = ktime_get_ns() >> 10;
>
> would give you a similar range and precision as microseconds, but
> completely avoid integer division. You could also use a different
> shift value to either extend the range beyond 71 minutes, or the
> extend the precision to something below a microsecond. This would
> be the most efficient implementation, but also require significant
> changes to the driver.
>
That is an interesting idea. People do care about aoe_deadsecs being
pretty accurate, so there would need to be a way to make that remain
accurate. The driver will fail outstanding I/O to the target and mark it
as "down" after unsuccessfully retransmitting commands to the target
for a number of seconds equal to aoe_deadsecs.
As to the efficient ktime_get_us idea, that sounds appealing since you
mention that they would be efficient.
Thanks for the analysis.
--
Ed
next prev parent reply other threads:[~2015-05-13 1:29 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-11 2:35 [PATCH] aoe: Use 64-bit timestamp in frame Tina Ruchandani
2015-05-11 15:38 ` Arnd Bergmann
2015-05-11 15:59 ` Ed Cashin
2015-05-12 1:00 ` Ed Cashin
2015-05-12 9:44 ` Arnd Bergmann
2015-05-12 11:14 ` [Y2038] " Arnd Bergmann
2015-05-13 1:23 ` Ed Cashin [this message]
2015-05-13 8:04 ` Arnd Bergmann
2015-05-14 0:47 ` Ed Cashin
2015-05-12 11:21 ` Ed Cashin
2015-05-13 1:26 ` Ed Cashin
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=5552A778.6070603@acm.org \
--to=ed.cashin@acm.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=ruchandani.tina@gmail.com \
--cc=y2038@lists.linaro.org \
/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.