]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Linux 5.0 compat: Use totalram_pages()
authorTony Hutter <hutter2@llnl.gov>
Thu, 10 Jan 2019 22:28:10 +0000 (14:28 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 28 Jan 2019 18:11:14 +0000 (10:11 -0800)
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 <behlendorf1@llnl.gov>
Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Closes #8263

config/kernel-totalram-pages-func.m4 [new file with mode: 0644]
config/kernel.m4
include/spl/sys/vmsystm.h
module/zfs/arc.c

diff --git a/config/kernel-totalram-pages-func.m4 b/config/kernel-totalram-pages-func.m4
new file mode 100644 (file)
index 0000000..a6eac64
--- /dev/null
@@ -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)
+       ])
+])
index ea04d85b6cd75160cd9eccf28f282d6a73a9431d..e4d0e3393b65071c3982d97e0ba4598ea521f2dc 100644 (file)
@@ -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"
index 2b48fe0e3693ff2439d2bfe303539ab6da423ae7..6bdfc852ac0a2c5d3d99dacc65e1384108b25ae9 100644 (file)
 #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) + \
index 7e09633345d4400ef23ed414b953bf76542000ef..f5d94cbf90a7ced140f3d408bde727ce074fb3d6 100644 (file)
@@ -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);