]> git.proxmox.com Git - mirror_spl-debian.git/blobdiff - config/spl-build.m4
Imported Upstream version 0.6.3+git20140731
[mirror_spl-debian.git] / config / spl-build.m4
index 84267807db1ca4df51a58fcf9217d15ef7f2740a..eef52334fb10532d00351607990534e50be0777e 100644 (file)
@@ -93,6 +93,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
        SPL_AC_SCHED_RT_HEADER
        SPL_AC_2ARGS_VFS_GETATTR
        SPL_AC_USLEEP_RANGE
+       SPL_AC_KMEM_CACHE_ALLOCFLAGS
 ])
 
 AC_DEFUN([SPL_AC_MODULE_SYMVERS], [
@@ -1907,7 +1908,28 @@ AC_DEFUN([SPL_AC_4ARGS_VFS_RENAME],
                        AC_DEFINE(HAVE_5ARGS_VFS_RENAME, 1,
                                  [vfs_rename() wants 5 args])
                ],[
-                       AC_MSG_ERROR(no)
+                       AC_MSG_RESULT(no)
+                       dnl #
+                       dnl # Linux 3.15 API change
+                       dnl # Added flags
+                       dnl #
+                       AC_MSG_CHECKING([whether vfs_rename() wants 6 args])
+                       SPL_LINUX_TRY_COMPILE([
+                               #include <linux/fs.h>
+                       ],[
+                               vfs_rename((struct inode *) NULL,
+                                       (struct dentry *) NULL,
+                                       (struct inode *) NULL,
+                                       (struct dentry *) NULL,
+                                       (struct inode **) NULL,
+                                       (unsigned int) 0);
+                       ],[
+                               AC_MSG_RESULT(yes)
+                               AC_DEFINE(HAVE_6ARGS_VFS_RENAME, 1,
+                                         [vfs_rename() wants 6 args])
+                       ],[
+                               AC_MSG_ERROR(no)
+                       ])
                ])
        ])
 ])
@@ -2511,3 +2533,40 @@ AC_DEFUN([SPL_AC_USLEEP_RANGE], [
                AC_MSG_RESULT(no)
        ])
 ])
+
+dnl #
+dnl # 2.6.35 API change,
+dnl # The cachep->gfpflags member was renamed cachep->allocflags.  These are
+dnl # private allocation flags which are applied when allocating a new slab
+dnl # in kmem_getpages().  Unfortunately there is no public API for setting
+dnl # non-default flags.
+dnl #
+AC_DEFUN([SPL_AC_KMEM_CACHE_ALLOCFLAGS], [
+       AC_MSG_CHECKING([whether struct kmem_cache has allocflags])
+       SPL_LINUX_TRY_COMPILE([
+               #include <linux/slab.h>
+       ],[
+               struct kmem_cache cachep __attribute__ ((unused));
+               cachep.allocflags = GFP_KERNEL;
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_KMEM_CACHE_ALLOCFLAGS, 1,
+                       [struct kmem_cache has allocflags])
+       ],[
+               AC_MSG_RESULT(no)
+
+               AC_MSG_CHECKING([whether struct kmem_cache has gfpflags])
+               SPL_LINUX_TRY_COMPILE([
+                       #include <linux/slab.h>
+               ],[
+                       struct kmem_cache cachep __attribute__ ((unused));
+                       cachep.gfpflags = GFP_KERNEL;
+               ],[
+                       AC_MSG_RESULT(yes)
+                       AC_DEFINE(HAVE_KMEM_CACHE_GFPFLAGS, 1,
+                               [struct kmem_cache has gfpflags])
+               ],[
+                       AC_MSG_RESULT(no)
+               ])
+       ])
+])