Whamcloud - gitweb
LU-9118 o2iblnd: handle MOFED libcfs time api collision 64/25564/6
authorJames Simmons <uja.ornl@yahoo.com>
Wed, 22 Feb 2017 22:31:06 +0000 (17:31 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 2 Mar 2017 06:56:59 +0000 (06:56 +0000)
Both libcfs and the MOFED 4 stack define
ktime_get_real_ns() for platforms that lack it.
The solution is to reverse the logic of testing
for ktime_get_real_ns() done by lustre. This way
we avoid the HAVE_KTIME_GET_REAL_NS collision.
Also to ensure older platforms with an older OFED
stack still will build only turn off NEED_KTIME_GET_REAL_NS
set by libcfs in o2iblnd.h when the OFED stack
has defined LINUX_3_17_COMPAT_H. The compat-3.17.h
OFED header is where ktime_get_real_ns() gets defined
when its lacking on the native platform.

Test-Parameters: trivial

Change-Id: I44966f22cfbb6138fa7bc3fa47148a6f0a94ebd4
Signed-off-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-on: https://review.whamcloud.com/25564
Tested-by: Jenkins
Reviewed-by: Olaf Weber <olaf@sgi.com>
Reviewed-by: Doug Oucharek <doug.s.oucharek@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
libcfs/autoconf/lustre-libcfs.m4
libcfs/include/libcfs/linux/linux-time.h
lnet/klnds/o2iblnd/o2iblnd.h

index 3740297..979b815 100644 (file)
@@ -365,19 +365,19 @@ ktime_get_real_seconds, [
 ]) # LIBCFS_KTIME_GET_REAL_SECONDS
 
 #
 ]) # LIBCFS_KTIME_GET_REAL_SECONDS
 
 #
-# Kernel version 3.17 created ktime_get_ns wrapper
+# Kernel version 3.17 created ktime_get_real_ns wrapper
 #
 AC_DEFUN([LIBCFS_KTIME_GET_REAL_NS],[
 LB_CHECK_COMPILE([does function 'ktime_get_real_ns' exist],
 #
 AC_DEFUN([LIBCFS_KTIME_GET_REAL_NS],[
 LB_CHECK_COMPILE([does function 'ktime_get_real_ns' exist],
-ktime_get_ns, [
+ktime_get_real_ns, [
        #include <linux/ktime.h>
 ],[
        u64 nanoseconds;
 
        nanoseconds = ktime_get_real_ns();
        #include <linux/ktime.h>
 ],[
        u64 nanoseconds;
 
        nanoseconds = ktime_get_real_ns();
-],[
-       AC_DEFINE(HAVE_KTIME_GET_REAL_NS, 1,
-               ['ktime_get_real_ns' is available])
+],[],[
+       AC_DEFINE(NEED_KTIME_GET_REAL_NS, 1,
+               ['ktime_get_real_ns' is not available])
 ])
 ]) # LIBCFS_KTIME_GET_REAL_NS
 
 ])
 ]) # LIBCFS_KTIME_GET_REAL_NS
 
index bf403ff..6c1004d 100644 (file)
@@ -145,12 +145,12 @@ time64_t ktime_get_real_seconds(void);
 time64_t ktime_get_seconds(void);
 #endif /* HAVE_KTIME_GET_SECONDS */
 
 time64_t ktime_get_seconds(void);
 #endif /* HAVE_KTIME_GET_SECONDS */
 
-#ifndef HAVE_KTIME_GET_REAL_NS
+#ifdef NEED_KTIME_GET_REAL_NS
 static inline u64 ktime_get_real_ns(void)
 {
        return ktime_to_ns(ktime_get_real());
 }
 static inline u64 ktime_get_real_ns(void)
 {
        return ktime_to_ns(ktime_get_real());
 }
-#endif /* HAVE_KTIME_GET_NS */
+#endif /* NEED_KTIME_GET_REAL_NS */
 
 static inline int cfs_time_before(cfs_time_t t1, cfs_time_t t2)
 {
 
 static inline int cfs_time_before(cfs_time_t t1, cfs_time_t t2)
 {
index fe17e08..298a355 100644 (file)
 
 #ifdef HAVE_COMPAT_RDMA
 #include <linux/compat-2.6.h>
 
 #ifdef HAVE_COMPAT_RDMA
 #include <linux/compat-2.6.h>
+
+#ifdef LINUX_3_17_COMPAT_H
+#undef NEED_KTIME_GET_REAL_NS
+#endif
+
 #endif
 
 #include <linux/version.h>
 #endif
 
 #include <linux/version.h>