diff options
author | Chunwei Chen <[email protected]> | 2016-11-01 17:19:52 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-11-07 11:04:44 -0800 |
commit | 3779913b35634d9d34ac9eb709203275b28050c2 (patch) | |
tree | a30b6a62a918bc460e0f256ce1b673f98f24901b /config/kernel-acl.m4 | |
parent | 8e71ab99dc4a591d41ab0d9255ddca3e914f47e4 (diff) |
Use set_cached_acl and forget_cached_acl when possible
Originally, these two function are inline, so their usability is tied to
posix_acl_release. However, since Linux 3.14, they became EXPORT_SYMBOL, so we
can always use them. In this patch, we create an independent test for these
two functions so we can use them when possible.
Signed-off-by: Chunwei Chen <[email protected]>
Diffstat (limited to 'config/kernel-acl.m4')
-rw-r--r-- | config/kernel-acl.m4 | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/config/kernel-acl.m4 b/config/kernel-acl.m4 index 50b502c31..949583762 100644 --- a/config/kernel-acl.m4 +++ b/config/kernel-acl.m4 @@ -41,6 +41,35 @@ AC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_RELEASE], [ ]) dnl # +dnl # 3.14 API change, +dnl # set_cached_acl() and forget_cached_acl() changed from inline to +dnl # EXPORT_SYMBOL. In the former case, they may not be usable because of +dnl # posix_acl_release. In the latter case, we can always use them. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_SET_CACHED_ACL_USABLE], [ + AC_MSG_CHECKING([whether set_cached_acl() is usable]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/module.h> + #include <linux/cred.h> + #include <linux/fs.h> + #include <linux/posix_acl.h> + + MODULE_LICENSE("$ZFS_META_LICENSE"); + ],[ + struct inode *ip = NULL; + struct posix_acl *acl = posix_acl_alloc(1, 0); + set_cached_acl(ip, 0, acl); + forget_cached_acl(ip, 0); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SET_CACHED_ACL_USABLE, 1, + [posix_acl_release() is usable]) + ],[ + AC_MSG_RESULT(no) + ]) +]) + +dnl # dnl # 3.1 API change, dnl # posix_acl_chmod_masq() is not exported anymore and posix_acl_chmod() dnl # was introduced to replace it. @@ -256,7 +285,7 @@ dnl # The kernel get_acl will now check cache before calling i_op->get_acl and dnl # do set_cached_acl after that, so i_op->get_acl don't need to do that dnl # anymore. dnl # -AC_DEFUN([ZFS_AC_KERNE_GET_ACL_HANDLE_CACHE], [ +AC_DEFUN([ZFS_AC_KERNEL_GET_ACL_HANDLE_CACHE], [ AC_MSG_CHECKING([whether uncached_acl_sentinel() exists]) ZFS_LINUX_TRY_COMPILE([ #include <linux/fs.h> |