]> git.proxmox.com Git - mirror_spl.git/commitdiff
Linux 5.0 compat: Use totalram_pages()
authorTony Hutter <hutter2@llnl.gov>
Fri, 18 Jan 2019 21:28:49 +0000 (13:28 -0800)
committerTony Hutter <hutter2@llnl.gov>
Fri, 22 Feb 2019 17:47:27 +0000 (09:47 -0800)
(This is the ported SPL part of this patch)

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/spl-build.m4
include/sys/vmsystm.h

diff --git a/config/kernel-totalram-pages-func.m4 b/config/kernel-totalram-pages-func.m4
new file mode 100644 (file)
index 0000000..02a4b2e
--- /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([SPL_AC_KERNEL_TOTALRAM_PAGES_FUNC], [
+       AC_MSG_CHECKING([whether totalram_pages() exists])
+       SPL_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 25a6ae91e8203687a7cbe37e4cd7977aea6f1a8e..094b1314f5c467d9b49417a5f5c5bff9f166ad6a 100644 (file)
@@ -55,6 +55,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
        SPL_AC_KERNEL_READ
        SPL_AC_KERNEL_TIMER_FUNCTION_TIMER_LIST
        SPL_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64
+       SPL_AC_KERNEL_TOTALRAM_PAGES_FUNC
 ])
 
 AC_DEFUN([SPL_AC_MODULE_SYMVERS], [
index 059512b94fdcebd9c4cc2f93844e161599d4a450..c330e965b8b582851293e1cb4572524a35cd4822 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) + \