summarylogtreecommitdiffstats
path: root/linux-5.6-compat-ktime_get_raw_ts64.patch
diff options
context:
space:
mode:
Diffstat (limited to 'linux-5.6-compat-ktime_get_raw_ts64.patch')
-rw-r--r--linux-5.6-compat-ktime_get_raw_ts64.patch129
1 files changed, 129 insertions, 0 deletions
diff --git a/linux-5.6-compat-ktime_get_raw_ts64.patch b/linux-5.6-compat-ktime_get_raw_ts64.patch
new file mode 100644
index 000000000000..d1cddf96cca6
--- /dev/null
+++ b/linux-5.6-compat-ktime_get_raw_ts64.patch
@@ -0,0 +1,129 @@
+diff --git a/config/kernel-ktime.m4 b/config/kernel-ktime.m4
+new file mode 100644
+index 00000000000..64c3b5f9032
+--- /dev/null
++++ b/config/kernel-ktime.m4
+@@ -0,0 +1,55 @@
++dnl #
++dnl # 4.18: ktime_get_coarse_real_ts64() replaces current_kernel_time64().
++dnl #
++AC_DEFUN([ZFS_AC_KERNEL_SRC_KTIME_GET_COARSE_REAL_TS64], [
++ ZFS_LINUX_TEST_SRC([ktime_get_coarse_real_ts64], [
++ #include <linux/mm.h>
++ ], [
++ struct timespec64 ts;
++ ktime_get_coarse_real_ts64(&ts);
++ ])
++])
++
++AC_DEFUN([ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64], [
++ AC_MSG_CHECKING([whether ktime_get_coarse_real_ts64() exists])
++ ZFS_LINUX_TEST_RESULT([ktime_get_coarse_real_ts64], [
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(HAVE_KTIME_GET_COARSE_REAL_TS64, 1,
++ [ktime_get_coarse_real_ts64() exists])
++ ], [
++ AC_MSG_RESULT(no)
++ ])
++])
++
++dnl #
++dnl # 4.18: ktime_get_raw_ts64() replaces getrawmonotonic64().
++dnl #
++AC_DEFUN([ZFS_AC_KERNEL_SRC_KTIME_GET_RAW_TS64], [
++ ZFS_LINUX_TEST_SRC([ktime_get_raw_ts64], [
++ #include <linux/mm.h>
++ ], [
++ struct timespec64 ts;
++ ktime_get_raw_ts64(&ts);
++ ])
++])
++
++AC_DEFUN([ZFS_AC_KERNEL_KTIME_GET_RAW_TS64], [
++ AC_MSG_CHECKING([whether ktime_get_raw_ts64() exists])
++ ZFS_LINUX_TEST_RESULT([ktime_get_raw_ts64], [
++ AC_MSG_RESULT(yes)
++ AC_DEFINE(HAVE_KTIME_GET_RAW_TS64, 1,
++ [ktime_get_raw_ts64() exists])
++ ], [
++ AC_MSG_RESULT(no)
++ ])
++])
++
++AC_DEFUN([ZFS_AC_KERNEL_SRC_KTIME], [
++ ZFS_AC_KERNEL_SRC_KTIME_GET_COARSE_REAL_TS64
++ ZFS_AC_KERNEL_SRC_KTIME_GET_RAW_TS64
++])
++
++AC_DEFUN([ZFS_AC_KERNEL_KTIME], [
++ ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64
++ ZFS_AC_KERNEL_KTIME_GET_RAW_TS64
++])
+diff --git a/config/kernel-ktime_get_coarse_real_ts64.m4 b/config/kernel-ktime_get_coarse_real_ts64.m4
+deleted file mode 100644
+index 28492bf04bc..00000000000
+--- a/config/kernel-ktime_get_coarse_real_ts64.m4
++++ /dev/null
+@@ -1,23 +0,0 @@
+-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_SRC_KTIME_GET_COARSE_REAL_TS64], [
+- ZFS_LINUX_TEST_SRC([ktime_get_coarse_real_ts64], [
+- #include <linux/mm.h>
+- ], [
+- struct timespec64 ts;
+- ktime_get_coarse_real_ts64(&ts);
+- ])
+-])
+-
+-AC_DEFUN([ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64], [
+- AC_MSG_CHECKING([whether ktime_get_coarse_real_ts64() exists])
+- ZFS_LINUX_TEST_RESULT([ktime_get_coarse_real_ts64], [
+- AC_MSG_RESULT(yes)
+- AC_DEFINE(HAVE_KTIME_GET_COARSE_REAL_TS64, 1,
+- [ktime_get_coarse_real_ts64() exists])
+- ], [
+- AC_MSG_RESULT(no)
+- ])
+-])
+diff --git a/config/kernel.m4 b/config/kernel.m4
+index 780de331800..994865fdba1 100644
+--- a/config/kernel.m4
++++ b/config/kernel.m4
+@@ -137,7 +137,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
+ ZFS_AC_KERNEL_SRC_CURRENT_TIME
+ ZFS_AC_KERNEL_SRC_USERNS_CAPABILITIES
+ ZFS_AC_KERNEL_SRC_IN_COMPAT_SYSCALL
+- ZFS_AC_KERNEL_SRC_KTIME_GET_COARSE_REAL_TS64
++ ZFS_AC_KERNEL_SRC_KTIME
+ ZFS_AC_KERNEL_SRC_TOTALRAM_PAGES_FUNC
+ ZFS_AC_KERNEL_SRC_TOTALHIGH_PAGES
+ ZFS_AC_KERNEL_SRC_KSTRTOUL
+@@ -254,7 +254,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
+ ZFS_AC_KERNEL_CURRENT_TIME
+ ZFS_AC_KERNEL_USERNS_CAPABILITIES
+ ZFS_AC_KERNEL_IN_COMPAT_SYSCALL
+- ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64
++ ZFS_AC_KERNEL_KTIME
+ ZFS_AC_KERNEL_TOTALRAM_PAGES_FUNC
+ ZFS_AC_KERNEL_TOTALHIGH_PAGES
+ ZFS_AC_KERNEL_KSTRTOUL
+diff --git a/include/spl/sys/time.h b/include/spl/sys/time.h
+index 24c1ec7c7ae..4309c300b26 100644
+--- a/include/spl/sys/time.h
++++ b/include/spl/sys/time.h
+@@ -105,8 +105,13 @@ gethrestime_sec(void)
+ static inline hrtime_t
+ gethrtime(void)
+ {
++#if defined(HAVE_KTIME_GET_RAW_TS64)
++ struct timespec64 ts;
++ ktime_get_raw_ts64(&ts);
++#else
+ struct timespec ts;
+ getrawmonotonic(&ts);
++#endif
+ return (((hrtime_t)ts.tv_sec * NSEC_PER_SEC) + ts.tv_nsec);
+ }