Whamcloud - gitweb
LU-9019 o2iblnd: use 64-bit ibn_incarnation computation 67/23267/7
authorJames Simmons <uja.ornl@yahoo.com>
Sat, 28 Jan 2017 03:53:33 +0000 (22:53 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 7 Feb 2017 06:12:39 +0000 (06:12 +0000)
ibn_incarnation is a 64-bit value, but using timeval to compute
it will cause an overflow in 2038. This changes it to use
ktime_get_real_ns() instead.

Change-Id: I4698a046ece30a85c93ac1f12e541d81fcfd70f2
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/23267
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Doug Oucharek <doug.s.oucharek@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lnet/klnds/o2iblnd/o2iblnd.c

index cd136b3..0124636 100644 (file)
@@ -3179,7 +3179,6 @@ kiblnd_startup (lnet_ni_t *ni)
         char                     *ifname;
         kib_dev_t                *ibdev = NULL;
         kib_net_t                *net;
-        struct timeval            tv;
         unsigned long             flags;
         int                       rc;
        int                       newdev;
@@ -3198,8 +3197,7 @@ kiblnd_startup (lnet_ni_t *ni)
         if (net == NULL)
                 goto failed;
 
-       do_gettimeofday(&tv);
-       net->ibn_incarnation = (((__u64)tv.tv_sec) * 1000000) + tv.tv_usec;
+       net->ibn_incarnation = ktime_get_real_ns() / NSEC_PER_USEC;
 
        kiblnd_tunables_setup(ni);