diff --git a/config/spl-build.m4 b/config/spl-build.m4 index 34d5c4f0b5..da179e33dd 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 b7e4b94261..2e55901012 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; }