diff --git a/config/spl-build.m4 b/config/spl-build.m4 index 8a8e3ba28f..34d5c4f0b5 100644 --- a/config/spl-build.m4 +++ b/config/spl-build.m4 @@ -33,6 +33,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ SPL_AC_TASK_CURR SPL_AC_CTL_UNNUMBERED SPL_AC_CTL_NAME + SPL_AC_VMALLOC_INFO SPL_AC_FLS64 SPL_AC_DEVICE_CREATE SPL_AC_5ARGS_DEVICE_CREATE @@ -1357,6 +1358,25 @@ AC_DEFUN([SPL_AC_GET_VMALLOC_INFO], ]) ]) +dnl # +dnl # 3.10 API change, +dnl # struct vmalloc_info is now declared in linux/vmalloc.h +dnl # +AC_DEFUN([SPL_AC_VMALLOC_INFO], [ + AC_MSG_CHECKING([whether struct vmalloc_info is declared]) + SPL_LINUX_TRY_COMPILE([ + #include + struct vmalloc_info { void *a; }; + ],[ + return 0; + ],[ + AC_MSG_RESULT(no) + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_VMALLOC_INFO, 1, [yes]) + ]) +]) + dnl # dnl # 2.6.17 API change dnl # The helper functions first_online_pgdat(), next_online_pgdat(), and diff --git a/include/sys/vmsystm.h b/include/sys/vmsystm.h index 9c52d28243..34aea2b98f 100644 --- a/include/sys/vmsystm.h +++ b/include/sys/vmsystm.h @@ -74,10 +74,12 @@ extern size_t vmem_size(vmem_t *vmp, int typemask); #ifndef HAVE_GET_VMALLOC_INFO #ifdef CONFIG_MMU +#ifndef HAVE_VMALLOC_INFO struct vmalloc_info { unsigned long used; unsigned long largest_chunk; }; +#endif typedef void (*get_vmalloc_info_t)(struct vmalloc_info *); extern get_vmalloc_info_t get_vmalloc_info_fn;