mirror of https://github.com/archzfs/zfs-dkms
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.8 KiB
129 lines
3.8 KiB
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);
|
|
}
|
|
|