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_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],
#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
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)
{
#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>