Skip to content

Commit

Permalink
Linux 4.18: Use ktime_get_coarse_real_ts64()
Browse files Browse the repository at this point in the history
Newer kernels remove current_kernel_time64().  Use
ktime_get_coarse_real_ts64() in its place.

Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes: openzfs#8258
  • Loading branch information
tonyhutter committed Jan 9, 2019
1 parent 8bd2a28 commit a27c6e1
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
18 changes: 18 additions & 0 deletions config/kernel-ktime_get_coarse_real_ts64.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
dnl #
dnl # 4.18: ktime_get_coarse_real_ts64() added. Use it in place of
dnl # current_kernel_time64().
dnl #
AC_DEFUN([ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64],
[AC_MSG_CHECKING([whether ktime_get_coarse_real_ts64() exists])
ZFS_LINUX_TRY_COMPILE([
#include <linux/mm.h>
], [
struct timespec64 ts;
ktime_get_coarse_real_ts64(&ts);
], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_KTIME_GET_COARSE_REAL_TS64, 1, [ktime_get_coarse_real_ts64() exists])
], [
AC_MSG_RESULT(no)
])
])
1 change: 1 addition & 0 deletions config/kernel.m4
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL_ACL_HAS_REFCOUNT
ZFS_AC_KERNEL_USERNS_CAPABILITIES
ZFS_AC_KERNEL_IN_COMPAT_SYSCALL
ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64
AS_IF([test "$LINUX_OBJ" != "$LINUX"], [
KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ"
Expand Down
12 changes: 12 additions & 0 deletions include/spl/sys/time.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,13 @@ static inline void
gethrestime(inode_timespec_t *ts)
{
#if defined(HAVE_INODE_TIMESPEC64_TIMES)

#if defined(HAVE_KTIME_GET_COARSE_REAL_TS64)
ktime_get_coarse_real_ts64(ts);
#else
*ts = current_kernel_time64();
#endif /* HAVE_KTIME_GET_COARSE_REAL_TS64 */

#else
*ts = current_kernel_time();
#endif
Expand All @@ -83,7 +89,13 @@ static inline time_t
gethrestime_sec(void)
{
#if defined(HAVE_INODE_TIMESPEC64_TIMES)
#if defined(HAVE_KTIME_GET_COARSE_REAL_TS64)
inode_timespec_t ts;
ktime_get_coarse_real_ts64(&ts);
#else
inode_timespec_t ts = current_kernel_time64();
#endif /* HAVE_KTIME_GET_COARSE_REAL_TS65 */

#else
inode_timespec_t ts = current_kernel_time();
#endif
Expand Down

0 comments on commit a27c6e1

Please sign in to comment.