diff options
author | Richard Yao <[email protected]> | 2012-08-16 19:31:54 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2012-10-14 15:29:26 -0700 |
commit | 95f5c63b47d8f8294b38843f9ba710e97b749b63 (patch) | |
tree | 6bea5a895ae24d30f78260a8bf16fc24254cc015 | |
parent | 558ef6d0805457654938dbe56c9a19b0121a712d (diff) |
Linux 3.6 compat, iops->mkdir()
Use .mkdir instead of .create in 3.3 compatibility check. Linux 3.6
modifies inode_operations->create's function prototype. This causes
an autotools Linux 3.3. compatibility check for a function prototype
change in create, mkdir and mknode to fail. Since mkdir and mknode
are unchanged, we modify the check to examine it instead.
Signed-off-by: Richard Yao <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #873
-rw-r--r-- | config/kernel-mkdir-umode-t.m4 (renamed from config/kernel-create-umode-t.m4) | 9 | ||||
-rw-r--r-- | config/kernel.m4 | 2 | ||||
-rw-r--r-- | include/linux/vfs_compat.h | 2 |
3 files changed, 6 insertions, 7 deletions
diff --git a/config/kernel-create-umode-t.m4 b/config/kernel-mkdir-umode-t.m4 index f88113f40..dd5d94ba9 100644 --- a/config/kernel-create-umode-t.m4 +++ b/config/kernel-mkdir-umode-t.m4 @@ -6,19 +6,18 @@ 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_DEFUN([ZFS_AC_KERNEL_MKDIR_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; + int (*mkdir) (struct inode *,struct dentry *,umode_t) = NULL; struct inode_operations iops __attribute__ ((unused)) = { - .create = create, + .mkdir = mkdir, }; ],[ AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_CREATE_UMODE_T, 1, + AC_DEFINE(HAVE_MKDIR_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 dd01fb28b..13238d8ac 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -49,10 +49,10 @@ 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_MKDIR_UMODE_T ZFS_AC_KERNEL_LOOKUP_NAMEIDATA ZFS_AC_KERNEL_CREATE_NAMEIDATA ZFS_AC_KERNEL_TRUNCATE_RANGE - ZFS_AC_KERNEL_CREATE_UMODE_T ZFS_AC_KERNEL_AUTOMOUNT ZFS_AC_KERNEL_ENCODE_FH_WITH_INODE ZFS_AC_KERNEL_COMMIT_METADATA diff --git a/include/linux/vfs_compat.h b/include/linux/vfs_compat.h index 7181625df..c4e1771ae 100644 --- a/include/linux/vfs_compat.h +++ b/include/linux/vfs_compat.h @@ -115,7 +115,7 @@ set_nlink(struct inode *inode, unsigned int nlink) * umode_t type rather than an int. To cleanly handle both definitions * the zpl_umode_t type is introduced and set accordingly. */ -#ifdef HAVE_CREATE_UMODE_T +#ifdef HAVE_MKDIR_UMODE_T typedef umode_t zpl_umode_t; #else typedef int zpl_umode_t; |