Skip to content

Commit

Permalink
Staging: lustre: lnet: Improve 'incarnation' stamp
Browse files Browse the repository at this point in the history
ksock_net_t uses a __u64 quantity as an 'incarnation' timestamp. This is also
passed on in hello messages and used to detect if a reboot has occurred.
This 'incarnation' is obtained using do_gettimeofday.It is only used in equality
checks, so the absolute value does not matter.

This patch replaces do_gettimeofday with ktime_get_ns for the following reasons:
1. ktime_get_ns returns a __u64 which is safer than 'struct timeval'
which will overflow on 32-bit systems in year 2038 and beyond.
2. Reduced compute: ktime_get_ns is faster than the multiply/add
   combination used in this function

Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Tina Ruchandani authored and Greg Kroah-Hartman committed Nov 4, 2014
1 parent b7c12ca commit 11dd2a9
Showing 1 changed file with 3 additions and 8 deletions.
11 changes: 3 additions & 8 deletions drivers/staging/lustre/lnet/klnds/socklnd/socklnd.c
Original file line number Diff line number Diff line change
Expand Up @@ -2348,16 +2348,11 @@ ksocknal_base_shutdown(void)
static __u64
ksocknal_new_incarnation (void)
{
struct timeval tv;

/* The incarnation number is the time this module loaded and it
* identifies this particular instance of the socknal. Hopefully
* we won't be able to reboot more frequently than 1MHz for the
* foreseeable future :) */

do_gettimeofday(&tv);

return (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec;
* identifies this particular instance of the socknal.
*/
return ktime_get_ns();
}

static int
Expand Down

0 comments on commit 11dd2a9

Please sign in to comment.