]> granicus.if.org Git - zfs/commitdiff
Linux 3.14 compat: posix_acl_{create,chmod}
authorChunwei Chen <tuxoko@gmail.com>
Fri, 28 Mar 2014 04:59:36 +0000 (12:59 +0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 10 Apr 2014 21:27:03 +0000 (14:27 -0700)
posix_acl_{create,chmod} is changed to __posix_acl_{create_chmod}

Signed-off-by: Chunwei Chen <tuxoko@gmail.com>
Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #2124

config/kernel-acl.m4
include/linux/vfs_compat.h
module/zfs/zpl_xattr.c

index e9a25478084bac420ff3eb35f1f76f6ba3a22957..a03ee5bffa8e26ca5a1b79502c0c53802fdccb01 100644 (file)
@@ -44,6 +44,9 @@ dnl # 3.1 API change,
 dnl # posix_acl_chmod_masq() is not exported anymore and posix_acl_chmod()
 dnl # was introduced to replace it.
 dnl #
+dnl # 3.14 API change,
+dnl # posix_acl_chmod() is changed to __posix_acl_chmod()
+dnl #
 AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [
        AC_MSG_CHECKING([whether posix_acl_chmod exists])
        ZFS_LINUX_TRY_COMPILE([
@@ -57,6 +60,19 @@ AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [
        ],[
                AC_MSG_RESULT(no)
        ])
+
+       AC_MSG_CHECKING([whether __posix_acl_chmod exists])
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/fs.h>
+               #include <linux/posix_acl.h>
+       ],[
+               __posix_acl_chmod(NULL, 0, 0)
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE___POSIX_ACL_CHMOD, 1, [__posix_acl_chmod() exists])
+       ],[
+               AC_MSG_RESULT(no)
+       ])
 ])
 
 dnl #
index 4778491fa4c133703ee1318d2bcc5f1ffe525d9e..4358cd2883a8f8aca2cee1b50980b4fb6efe049f 100644 (file)
@@ -263,9 +263,13 @@ zpl_forget_cached_acl(struct inode *ip, int type) {
 #define        zpl_inode_owner_or_capable(ip)          is_owner_or_cap(ip)
 #endif /* HAVE_INODE_OWNER_OR_CAPABLE */
 
-#ifndef HAVE_POSIX_ACL_CHMOD
+#ifndef HAVE___POSIX_ACL_CHMOD
+#ifdef HAVE_POSIX_ACL_CHMOD
+#define        __posix_acl_chmod(acl, gfp, mode)       posix_acl_chmod(acl, gfp, mode)
+#define        __posix_acl_create(acl, gfp, mode)      posix_acl_create(acl, gfp, mode)
+#else
 static inline int
-posix_acl_chmod(struct posix_acl **acl, int flags, umode_t umode) {
+__posix_acl_chmod(struct posix_acl **acl, int flags, umode_t umode) {
        struct posix_acl *oldacl = *acl;
        mode_t mode = umode;
        int error;
@@ -286,7 +290,7 @@ posix_acl_chmod(struct posix_acl **acl, int flags, umode_t umode) {
 }
 
 static inline int
-posix_acl_create(struct posix_acl **acl, int flags, umode_t *umodep) {
+__posix_acl_create(struct posix_acl **acl, int flags, umode_t *umodep) {
        struct posix_acl *oldacl = *acl;
        mode_t mode = *umodep;
        int error;
@@ -308,6 +312,7 @@ posix_acl_create(struct posix_acl **acl, int flags, umode_t *umodep) {
        return (error);
 }
 #endif /* HAVE_POSIX_ACL_CHMOD */
+#endif /* HAVE___POSIX_ACL_CHMOD */
 
 #ifndef HAVE_CURRENT_UMASK
 static inline int
index 9334ae7d174a8dbfe0bbfe7f297b40b044fa7708..c5c15a2ddb871715dee09715ea3fe0223e574f03 100644 (file)
@@ -924,7 +924,7 @@ zpl_init_acl(struct inode *ip, struct inode *dir)
                }
 
                mode = ip->i_mode;
-               error = posix_acl_create(&acl, GFP_KERNEL, &mode);
+               error = __posix_acl_create(&acl, GFP_KERNEL, &mode);
                if (error >= 0) {
                        ip->i_mode = mode;
                        mark_inode_dirty(ip);
@@ -954,7 +954,7 @@ zpl_chmod_acl(struct inode *ip)
        if (IS_ERR(acl) || !acl)
                return (PTR_ERR(acl));
 
-       error = posix_acl_chmod(&acl, GFP_KERNEL, ip->i_mode);
+       error = __posix_acl_chmod(&acl, GFP_KERNEL, ip->i_mode);
        if (!error)
                error = zpl_set_acl(ip, ACL_TYPE_ACCESS, acl);