Linux 3.14 compat: posix_acl_{create,chmod}

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
This commit is contained in:
Chunwei Chen 2014-03-28 12:59:36 +08:00 committed by Brian Behlendorf
parent 443c3f7332
commit 408ec0d2e1
3 changed files with 26 additions and 5 deletions

View File

@ -44,6 +44,9 @@ dnl # 3.1 API change,
dnl # posix_acl_chmod_masq() is not exported anymore and posix_acl_chmod() dnl # posix_acl_chmod_masq() is not exported anymore and posix_acl_chmod()
dnl # was introduced to replace it. dnl # was introduced to replace it.
dnl # 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_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [
AC_MSG_CHECKING([whether posix_acl_chmod exists]) AC_MSG_CHECKING([whether posix_acl_chmod exists])
ZFS_LINUX_TRY_COMPILE([ ZFS_LINUX_TRY_COMPILE([
@ -57,6 +60,19 @@ AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [
],[ ],[
AC_MSG_RESULT(no) 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 # dnl #

View 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) #define zpl_inode_owner_or_capable(ip) is_owner_or_cap(ip)
#endif /* HAVE_INODE_OWNER_OR_CAPABLE */ #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 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; struct posix_acl *oldacl = *acl;
mode_t mode = umode; mode_t mode = umode;
int error; int error;
@ -286,7 +290,7 @@ posix_acl_chmod(struct posix_acl **acl, int flags, umode_t umode) {
} }
static inline int 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; struct posix_acl *oldacl = *acl;
mode_t mode = *umodep; mode_t mode = *umodep;
int error; int error;
@ -308,6 +312,7 @@ posix_acl_create(struct posix_acl **acl, int flags, umode_t *umodep) {
return (error); return (error);
} }
#endif /* HAVE_POSIX_ACL_CHMOD */ #endif /* HAVE_POSIX_ACL_CHMOD */
#endif /* HAVE___POSIX_ACL_CHMOD */
#ifndef HAVE_CURRENT_UMASK #ifndef HAVE_CURRENT_UMASK
static inline int static inline int

View File

@ -924,7 +924,7 @@ zpl_init_acl(struct inode *ip, struct inode *dir)
} }
mode = ip->i_mode; mode = ip->i_mode;
error = posix_acl_create(&acl, GFP_KERNEL, &mode); error = __posix_acl_create(&acl, GFP_KERNEL, &mode);
if (error >= 0) { if (error >= 0) {
ip->i_mode = mode; ip->i_mode = mode;
mark_inode_dirty(ip); mark_inode_dirty(ip);
@ -954,7 +954,7 @@ zpl_chmod_acl(struct inode *ip)
if (IS_ERR(acl) || !acl) if (IS_ERR(acl) || !acl)
return (PTR_ERR(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) if (!error)
error = zpl_set_acl(ip, ACL_TYPE_ACCESS, acl); error = zpl_set_acl(ip, ACL_TYPE_ACCESS, acl);