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 <behlendorf1@llnl.gov>
Closes #701
This commit is contained in:
Brian Behlendorf
2012-04-30 12:01:49 -07:00
parent ce90208cf9
commit b39d3b9f7b
62 changed files with 241 additions and 6 deletions
+26
View File
@@ -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)
])
])
+1
View File
@@ -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