Skip to content

Commit

Permalink
Linux 5.0 compat: Use totalhigh_pages()
Browse files Browse the repository at this point in the history
Linux kernel commit ca79b0c211af63fa3276f0e3fd7dd9ada2439839
"mm: convert totalram_pages and totalhigh_pages variables to atomic"

replaced `totalhigh_pages` with an inline function `totalhigh_pages()`.
This broke compilation on IA32, etc, as ZoL uses `totalhigh_pages`
on archs with highmem. Confirmed on Fedora 30 (5.0.9-301.fc30.i686).

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
Closes openzfs#8677
Closes openzfs#8701
  • Loading branch information
kusumi authored and behlendorf committed May 4, 2019
1 parent 1eacf2b commit de3e0b9
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 1 deletion.
19 changes: 19 additions & 0 deletions config/kernel-totalhigh_pages.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
dnl #
dnl # 5.0 API change
dnl #
dnl # ca79b0c211af mm: convert totalram_pages and totalhigh_pages variables to atomic
dnl #
AC_DEFUN([ZFS_AC_KERNEL_TOTALHIGH_PAGES], [
AC_MSG_CHECKING([whether totalhigh_pages() exists])
ZFS_LINUX_TRY_COMPILE([
#include <linux/highmem.h>
],[
unsigned long pages __attribute__ ((unused));
pages = totalhigh_pages();
],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_TOTALHIGH_PAGES, 1, [totalhigh_pages() exists])
],[
AC_MSG_RESULT(no)
])
])
1 change: 1 addition & 0 deletions config/kernel.m4
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
ZFS_AC_KERNEL_IN_COMPAT_SYSCALL
ZFS_AC_KERNEL_KTIME_GET_COARSE_REAL_TS64
ZFS_AC_KERNEL_TOTALRAM_PAGES_FUNC
ZFS_AC_KERNEL_TOTALHIGH_PAGES
ZFS_AC_KERNEL_BLK_QUEUE_DISCARD
ZFS_AC_KERNEL_BLK_QUEUE_SECURE_ERASE
Expand Down
6 changes: 6 additions & 0 deletions include/spl/sys/vmsystm.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@
#define zfs_totalram_pages totalram_pages
#endif

#ifdef HAVE_TOTALHIGH_PAGES
#define zfs_totalhigh_pages totalhigh_pages()
#else
#define zfs_totalhigh_pages totalhigh_pages
#endif

#define membar_producer() smp_wmb()
#define physmem zfs_totalram_pages
#define freemem (nr_free_pages() + \
Expand Down
2 changes: 1 addition & 1 deletion module/zfs/arc.c
Original file line number Diff line number Diff line change
Expand Up @@ -4828,7 +4828,7 @@ arc_all_memory(void)
{
#ifdef _KERNEL
#ifdef CONFIG_HIGHMEM
return (ptob(zfs_totalram_pages - totalhigh_pages));
return (ptob(zfs_totalram_pages - zfs_totalhigh_pages));
#else
return (ptob(zfs_totalram_pages));
#endif /* CONFIG_HIGHMEM */
Expand Down

0 comments on commit de3e0b9

Please sign in to comment.