diff options
author | Brian Behlendorf <[email protected]> | 2012-04-30 12:01:49 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2012-04-30 12:52:38 -0700 |
commit | b39d3b9f7be925ba9314c336099f31f508e1d940 (patch) | |
tree | 5bc9d2f44becaef2b6e1d6d5114a6bc21f6302e2 /config | |
parent | ce90208cf9e04df966429f115d8831371ea9afce (diff) |
Linux 3.3 compat, iops->create()/mkdir()/mknod()
The mode argument of iops->create()/mkdir()/mknod() was changed from
an 'int' to a 'umode_t'. To prevent a compiler warning an autoconf
check was added to detect the API change and then correctly set a
zpl_umode_t typedef. There is no functional change.
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #701
Diffstat (limited to 'config')
-rw-r--r-- | config/kernel-create-umode-t.m4 | 26 | ||||
-rw-r--r-- | config/kernel.m4 | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/config/kernel-create-umode-t.m4 b/config/kernel-create-umode-t.m4 new file mode 100644 index 000000000..f88113f40 --- /dev/null +++ b/config/kernel-create-umode-t.m4 @@ -0,0 +1,26 @@ +dnl # +dnl # 3.3 API change +dnl # The VFS .create, .mkdir and .mknod callbacks were updated to take a +dnl # umode_t type rather than an int. The expectation is that any backport +dnl # would also change all three prototypes. However, if it turns out that +dnl # some distribution doesn't backport the whole thing this could be +dnl # broken apart in to three seperate checks. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_CREATE_UMODE_T], [ + AC_MSG_CHECKING([whether iops->create()/mkdir()/mknod() take umode_t]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/fs.h> + ],[ + int (*create) (struct inode *, struct dentry *, umode_t, + struct nameidata *) = NULL; + struct inode_operations iops __attribute__ ((unused)) = { + .create = create, + }; + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_CREATE_UMODE_T, 1, + [iops->create()/mkdir()/mknod() take umode_t]) + ],[ + AC_MSG_RESULT(no) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index a6d544bb7..48e92ced4 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -45,6 +45,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_NR_CACHED_OBJECTS ZFS_AC_KERNEL_FREE_CACHED_OBJECTS ZFS_AC_KERNEL_FALLOCATE + ZFS_AC_KERNEL_CREATE_UMODE_T ZFS_AC_KERNEL_AUTOMOUNT ZFS_AC_KERNEL_INSERT_INODE_LOCKED ZFS_AC_KERNEL_D_OBTAIN_ALIAS |