Linux 6.11: add compat macro for page_mapping()
Since the change to folios it has just been a wrapper anyway. Linux has removed their wrapper, so we add one. Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Sponsored-by: https://despairlabs.com/sponsor/ Closes #16400
This commit is contained in:
parent
11ad6124c3
commit
8156099cf2
|
@ -1,17 +0,0 @@
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE], [
|
|
||||||
ZFS_LINUX_TEST_SRC([page_size], [
|
|
||||||
#include <linux/mm.h>
|
|
||||||
],[
|
|
||||||
unsigned long s;
|
|
||||||
s = page_size(NULL);
|
|
||||||
])
|
|
||||||
])
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_MM_PAGE_SIZE], [
|
|
||||||
AC_MSG_CHECKING([whether page_size() is available])
|
|
||||||
ZFS_LINUX_TEST_RESULT([page_size], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(HAVE_MM_PAGE_SIZE, 1, [page_size() is available])
|
|
||||||
],[
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
])
|
|
||||||
])
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE], [
|
||||||
|
ZFS_LINUX_TEST_SRC([page_size], [
|
||||||
|
#include <linux/mm.h>
|
||||||
|
],[
|
||||||
|
unsigned long s;
|
||||||
|
s = page_size(NULL);
|
||||||
|
])
|
||||||
|
])
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_MM_PAGE_SIZE], [
|
||||||
|
AC_MSG_CHECKING([whether page_size() is available])
|
||||||
|
ZFS_LINUX_TEST_RESULT([page_size], [
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_MM_PAGE_SIZE, 1, [page_size() is available])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_SRC_MM_PAGE_MAPPING], [
|
||||||
|
ZFS_LINUX_TEST_SRC([page_mapping], [
|
||||||
|
#include <linux/pagemap.h>
|
||||||
|
],[
|
||||||
|
struct page *p = NULL;
|
||||||
|
struct address_space *m = page_mapping(NULL);
|
||||||
|
])
|
||||||
|
])
|
||||||
|
AC_DEFUN([ZFS_AC_KERNEL_MM_PAGE_MAPPING], [
|
||||||
|
AC_MSG_CHECKING([whether page_mapping() is available])
|
||||||
|
ZFS_LINUX_TEST_RESULT([page_mapping], [
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
AC_DEFINE(HAVE_MM_PAGE_MAPPING, 1, [page_mapping() is available])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
])
|
||||||
|
])
|
|
@ -170,6 +170,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
|
||||||
ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ
|
ZFS_AC_KERNEL_SRC_COPY_SPLICE_READ
|
||||||
ZFS_AC_KERNEL_SRC_SYNC_BDEV
|
ZFS_AC_KERNEL_SRC_SYNC_BDEV
|
||||||
ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE
|
ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE
|
||||||
|
ZFS_AC_KERNEL_SRC_MM_PAGE_MAPPING
|
||||||
case "$host_cpu" in
|
case "$host_cpu" in
|
||||||
powerpc*)
|
powerpc*)
|
||||||
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
|
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
|
||||||
|
@ -322,6 +323,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
|
||||||
ZFS_AC_KERNEL_COPY_SPLICE_READ
|
ZFS_AC_KERNEL_COPY_SPLICE_READ
|
||||||
ZFS_AC_KERNEL_SYNC_BDEV
|
ZFS_AC_KERNEL_SYNC_BDEV
|
||||||
ZFS_AC_KERNEL_MM_PAGE_SIZE
|
ZFS_AC_KERNEL_MM_PAGE_SIZE
|
||||||
|
ZFS_AC_KERNEL_MM_PAGE_MAPPING
|
||||||
case "$host_cpu" in
|
case "$host_cpu" in
|
||||||
powerpc*)
|
powerpc*)
|
||||||
ZFS_AC_KERNEL_CPU_HAS_FEATURE
|
ZFS_AC_KERNEL_CPU_HAS_FEATURE
|
||||||
|
|
|
@ -21,16 +21,23 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2023, 2024, Klara Inc.
|
* Copyright (c) 2023, 2024, Klara Inc.
|
||||||
|
* Copyright (c) 2024, Rob Norris <robn@despairlabs.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _ZFS_MM_COMPAT_H
|
#ifndef _ZFS_MM_COMPAT_H
|
||||||
#define _ZFS_MM_COMPAT_H
|
#define _ZFS_MM_COMPAT_H
|
||||||
|
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
#include <linux/pagemap.h>
|
||||||
|
|
||||||
/* 5.4 introduced page_size(). Older kernels can use a trivial macro instead */
|
/* 5.4 introduced page_size(). Older kernels can use a trivial macro instead */
|
||||||
#ifndef HAVE_MM_PAGE_SIZE
|
#ifndef HAVE_MM_PAGE_SIZE
|
||||||
#define page_size(p) ((unsigned long)(PAGE_SIZE << compound_order(p)))
|
#define page_size(p) ((unsigned long)(PAGE_SIZE << compound_order(p)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* 6.11 removed page_mapping(). A simple wrapper around folio_mapping() works */
|
||||||
|
#ifndef HAVE_MM_PAGE_MAPPING
|
||||||
|
#define page_mapping(p) folio_mapping(page_folio(p))
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _ZFS_MM_COMPAT_H */
|
#endif /* _ZFS_MM_COMPAT_H */
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
#include <sys/zpl.h>
|
#include <sys/zpl.h>
|
||||||
#include <sys/zil.h>
|
#include <sys/zil.h>
|
||||||
#include <sys/sa_impl.h>
|
#include <sys/sa_impl.h>
|
||||||
|
#include <linux/mm_compat.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Programming rules.
|
* Programming rules.
|
||||||
|
|
Loading…
Reference in New Issue