From 1ddf9722dcb6429d38fcbc5ff791779ec89be9fc Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Tue, 14 May 2013 08:39:26 +0800 Subject: [PATCH] Linux 3.10 compat: replace PDE()->data with PDE_DATA() Linux kernel commit torvalds/linux@d9dda78b renamed PDE() to PDE_DATA(). To handle this detect the prefered interface and define a PDE_DATA() wrapper for consistency. Signed-off-by: Yuxuan Shui Signed-off-by: Richard Yao Signed-off-by: Brian Behlendorf Issue #257 --- config/spl-build.m4 | 19 +++++++++++++++++++ module/spl/spl-kstat.c | 5 ++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/config/spl-build.m4 b/config/spl-build.m4 index 34d5c4f..da179e3 100644 --- a/config/spl-build.m4 +++ b/config/spl-build.m4 @@ -34,6 +34,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ SPL_AC_CTL_UNNUMBERED SPL_AC_CTL_NAME SPL_AC_VMALLOC_INFO + SPL_AC_PDE_DATA SPL_AC_FLS64 SPL_AC_DEVICE_CREATE SPL_AC_5ARGS_DEVICE_CREATE @@ -1377,6 +1378,24 @@ AC_DEFUN([SPL_AC_VMALLOC_INFO], [ ]) ]) +dnl # +dnl # 3.10 API change, +dnl # PDE is replaced by PDE_DATA +dnl # +AC_DEFUN([SPL_AC_PDE_DATA], [ + AC_MSG_CHECKING([whether PDE_DATA() is available]) + SPL_LINUX_TRY_COMPILE_SYMBOL([ + #include + ], [ + PDE_DATA(NULL); + ], [PDE_DATA], [], [ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PDE_DATA, 1, [yes]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + dnl # dnl # 2.6.17 API change dnl # The helper functions first_online_pgdat(), next_online_pgdat(), and diff --git a/module/spl/spl-kstat.c b/module/spl/spl-kstat.c index b7e4b94..2e55901 100644 --- a/module/spl/spl-kstat.c +++ b/module/spl/spl-kstat.c @@ -33,6 +33,9 @@ #endif #define SS_DEBUG_SUBSYS SS_KSTAT +#ifndef HAVE_PDE_DATA +#define PDE_DATA(x) (PDE(x)->data) +#endif static spinlock_t kstat_lock; static struct list_head kstat_list; @@ -359,7 +362,7 @@ proc_kstat_open(struct inode *inode, struct file *filp) return rc; f = filp->private_data; - f->private = PDE(inode)->data; + f->private = PDE_DATA(inode); return rc; } -- 2.39.2