diff options
author | Tony Hutter <[email protected]> | 2019-01-10 14:28:10 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-01-28 10:11:14 -0800 |
commit | 031cea17a3db1dae3b6968a8c71bcfb678a03235 (patch) | |
tree | a60ac674f73053dc6f69000686687ff734d61753 | |
parent | 77e50c3070a0009c4ed8b50dbb7cf0df48bdda90 (diff) |
Linux 5.0 compat: Use totalram_pages()
totalram_pages() was converted to an atomic variable in 5.0:
https://patchwork.kernel.org/patch/10652795/
Its value should now be read though the totalram_pages() helper
function.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tony Hutter <[email protected]>
Closes #8263
-rw-r--r-- | config/kernel-totalram-pages-func.m4 | 18 | ||||
-rw-r--r-- | config/kernel.m4 | 1 | ||||
-rw-r--r-- | include/spl/sys/vmsystm.h | 8 | ||||
-rw-r--r-- | module/zfs/arc.c | 4 |
4 files changed, 28 insertions, 3 deletions
diff --git a/config/kernel-totalram-pages-func.m4 b/config/kernel-totalram-pages-func.m4 new file mode 100644 index 000000000..a6eac6454 --- /dev/null +++ b/config/kernel-totalram-pages-func.m4 @@ -0,0 +1,18 @@ +dnl # +dnl # Linux 5.0: totalram_pages is no longer a global variable, and must be +dnl # read via the totalram_pages() helper function. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_TOTALRAM_PAGES_FUNC], [ + AC_MSG_CHECKING([whether totalram_pages() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/mm.h> + ],[ + unsigned long pages __attribute__ ((unused)); + pages = totalram_pages(); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_TOTALRAM_PAGES_FUNC, 1, [kernel has totalram_pages()]) + ],[ + AC_MSG_RESULT(no) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index ea04d85b6..e4d0e3393 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -163,6 +163,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_USERNS_CAPABILITIES ZFS_AC_KERNEL_IN_COMPAT_SYSCALL ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64 + ZFS_AC_KERNEL_TOTALRAM_PAGES_FUNC AS_IF([test "$LINUX_OBJ" != "$LINUX"], [ KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ" diff --git a/include/spl/sys/vmsystm.h b/include/spl/sys/vmsystm.h index 2b48fe0e3..6bdfc852a 100644 --- a/include/spl/sys/vmsystm.h +++ b/include/spl/sys/vmsystm.h @@ -33,8 +33,14 @@ #include <sys/types.h> #include <asm/uaccess.h> +#ifdef HAVE_TOTALRAM_PAGES_FUNC +#define zfs_totalram_pages totalram_pages() +#else +#define zfs_totalram_pages totalram_pages +#endif + #define membar_producer() smp_wmb() -#define physmem totalram_pages +#define physmem zfs_totalram_pages #define freemem (nr_free_pages() + \ global_page_state(NR_INACTIVE_FILE) + \ global_page_state(NR_INACTIVE_ANON) + \ diff --git a/module/zfs/arc.c b/module/zfs/arc.c index 7e0963334..f5d94cbf9 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -4821,9 +4821,9 @@ arc_all_memory(void) { #ifdef _KERNEL #ifdef CONFIG_HIGHMEM - return (ptob(totalram_pages - totalhigh_pages)); + return (ptob(zfs_totalram_pages - totalhigh_pages)); #else - return (ptob(totalram_pages)); + return (ptob(zfs_totalram_pages)); #endif /* CONFIG_HIGHMEM */ #else return (ptob(physmem) / 2); |