1eda14cbcSMatt Macydnl # 2eda14cbcSMatt Macydnl # Check if posix_acl_release can be used from a ZFS_META_LICENSED 3eda14cbcSMatt Macydnl # module. The is_owner_or_cap macro was replaced by 4eda14cbcSMatt Macydnl # inode_owner_or_capable 5eda14cbcSMatt Macydnl # 6eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_RELEASE], [ 7eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([posix_acl_release], [ 8eda14cbcSMatt Macy #include <linux/cred.h> 9eda14cbcSMatt Macy #include <linux/fs.h> 10eda14cbcSMatt Macy #include <linux/posix_acl.h> 11eda14cbcSMatt Macy ], [ 12eda14cbcSMatt Macy struct posix_acl *tmp = posix_acl_alloc(1, 0); 13eda14cbcSMatt Macy posix_acl_release(tmp); 147877fdebSMatt Macy ], [], [ZFS_META_LICENSE]) 15eda14cbcSMatt Macy]) 16eda14cbcSMatt Macy 17eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_RELEASE], [ 18eda14cbcSMatt Macy AC_MSG_CHECKING([whether posix_acl_release() is available]) 19eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([posix_acl_release], [ 20eda14cbcSMatt Macy AC_MSG_RESULT(yes) 21eda14cbcSMatt Macy AC_DEFINE(HAVE_POSIX_ACL_RELEASE, 1, 22eda14cbcSMatt Macy [posix_acl_release() is available]) 23eda14cbcSMatt Macy 24eda14cbcSMatt Macy AC_MSG_CHECKING([whether posix_acl_release() is GPL-only]) 25eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([posix_acl_release_license], [ 26eda14cbcSMatt Macy AC_MSG_RESULT(no) 27eda14cbcSMatt Macy ],[ 28eda14cbcSMatt Macy AC_MSG_RESULT(yes) 29eda14cbcSMatt Macy AC_DEFINE(HAVE_POSIX_ACL_RELEASE_GPL_ONLY, 1, 30eda14cbcSMatt Macy [posix_acl_release() is GPL-only]) 31eda14cbcSMatt Macy ]) 32eda14cbcSMatt Macy ],[ 33eda14cbcSMatt Macy AC_MSG_RESULT(no) 34eda14cbcSMatt Macy ]) 35eda14cbcSMatt Macy]) 36eda14cbcSMatt Macy 37eda14cbcSMatt Macydnl # 38eda14cbcSMatt Macydnl # 3.14 API change, 39eda14cbcSMatt Macydnl # set_cached_acl() and forget_cached_acl() changed from inline to 40eda14cbcSMatt Macydnl # EXPORT_SYMBOL. In the former case, they may not be usable because of 41eda14cbcSMatt Macydnl # posix_acl_release. In the latter case, we can always use them. 42eda14cbcSMatt Macydnl # 43eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_SET_CACHED_ACL_USABLE], [ 44eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([set_cached_acl], [ 45eda14cbcSMatt Macy #include <linux/cred.h> 46eda14cbcSMatt Macy #include <linux/fs.h> 47eda14cbcSMatt Macy #include <linux/posix_acl.h> 48eda14cbcSMatt Macy ], [ 49eda14cbcSMatt Macy struct inode *ip = NULL; 50eda14cbcSMatt Macy struct posix_acl *acl = posix_acl_alloc(1, 0); 51eda14cbcSMatt Macy set_cached_acl(ip, ACL_TYPE_ACCESS, acl); 52eda14cbcSMatt Macy forget_cached_acl(ip, ACL_TYPE_ACCESS); 537877fdebSMatt Macy ], [], [ZFS_META_LICENSE]) 54eda14cbcSMatt Macy]) 55eda14cbcSMatt Macy 56eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SET_CACHED_ACL_USABLE], [ 57eda14cbcSMatt Macy AC_MSG_CHECKING([whether set_cached_acl() is usable]) 58eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([set_cached_acl_license], [ 59eda14cbcSMatt Macy AC_MSG_RESULT(yes) 60eda14cbcSMatt Macy AC_DEFINE(HAVE_SET_CACHED_ACL_USABLE, 1, 61eda14cbcSMatt Macy [set_cached_acl() is usable]) 62eda14cbcSMatt Macy ],[ 63eda14cbcSMatt Macy AC_MSG_RESULT(no) 64eda14cbcSMatt Macy ]) 65eda14cbcSMatt Macy]) 66eda14cbcSMatt Macy 67eda14cbcSMatt Macydnl # 68eda14cbcSMatt Macydnl # 3.1 API change, 69eda14cbcSMatt Macydnl # posix_acl_chmod() was added as the preferred interface. 70eda14cbcSMatt Macydnl # 71eda14cbcSMatt Macydnl # 3.14 API change, 72eda14cbcSMatt Macydnl # posix_acl_chmod() was changed to __posix_acl_chmod() 73eda14cbcSMatt Macydnl # 74eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_CHMOD], [ 75eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([posix_acl_chmod], [ 76eda14cbcSMatt Macy #include <linux/fs.h> 77eda14cbcSMatt Macy #include <linux/posix_acl.h> 78eda14cbcSMatt Macy ],[ 79eda14cbcSMatt Macy posix_acl_chmod(NULL, 0, 0) 80eda14cbcSMatt Macy ]) 81eda14cbcSMatt Macy 82eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([__posix_acl_chmod], [ 83eda14cbcSMatt Macy #include <linux/fs.h> 84eda14cbcSMatt Macy #include <linux/posix_acl.h> 85eda14cbcSMatt Macy ],[ 86eda14cbcSMatt Macy __posix_acl_chmod(NULL, 0, 0) 87eda14cbcSMatt Macy ]) 88eda14cbcSMatt Macy]) 89eda14cbcSMatt Macy 90eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_CHMOD], [ 91eda14cbcSMatt Macy AC_MSG_CHECKING([whether __posix_acl_chmod exists]) 92eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([__posix_acl_chmod], [ 93eda14cbcSMatt Macy AC_MSG_RESULT(yes) 94eda14cbcSMatt Macy AC_DEFINE(HAVE___POSIX_ACL_CHMOD, 1, 95eda14cbcSMatt Macy [__posix_acl_chmod() exists]) 96eda14cbcSMatt Macy ],[ 97eda14cbcSMatt Macy AC_MSG_RESULT(no) 98eda14cbcSMatt Macy 99eda14cbcSMatt Macy AC_MSG_CHECKING([whether posix_acl_chmod exists]) 100eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([posix_acl_chmod], [ 101eda14cbcSMatt Macy AC_MSG_RESULT(yes) 102eda14cbcSMatt Macy AC_DEFINE(HAVE_POSIX_ACL_CHMOD, 1, 103eda14cbcSMatt Macy [posix_acl_chmod() exists]) 104eda14cbcSMatt Macy ],[ 105eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([posix_acl_chmod()]) 106eda14cbcSMatt Macy ]) 107eda14cbcSMatt Macy ]) 108eda14cbcSMatt Macy]) 109eda14cbcSMatt Macy 110eda14cbcSMatt Macydnl # 111eda14cbcSMatt Macydnl # 3.1 API change, 112eda14cbcSMatt Macydnl # posix_acl_equiv_mode now wants an umode_t instead of a mode_t 113eda14cbcSMatt Macydnl # 114eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T], [ 115eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([posix_acl_equiv_mode], [ 116eda14cbcSMatt Macy #include <linux/fs.h> 117eda14cbcSMatt Macy #include <linux/posix_acl.h> 118eda14cbcSMatt Macy ],[ 119eda14cbcSMatt Macy umode_t tmp; 120eda14cbcSMatt Macy posix_acl_equiv_mode(NULL, &tmp); 121eda14cbcSMatt Macy ]) 122eda14cbcSMatt Macy]) 123eda14cbcSMatt Macy 124eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T], [ 125eda14cbcSMatt Macy AC_MSG_CHECKING([whether posix_acl_equiv_mode() wants umode_t]) 126eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([posix_acl_equiv_mode], [ 127eda14cbcSMatt Macy AC_MSG_RESULT(yes) 128eda14cbcSMatt Macy ],[ 129eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([posix_acl_equiv_mode()]) 130eda14cbcSMatt Macy ]) 131eda14cbcSMatt Macy]) 132eda14cbcSMatt Macy 133eda14cbcSMatt Macydnl # 134eda14cbcSMatt Macydnl # 4.8 API change, 135eda14cbcSMatt Macydnl # The function posix_acl_valid now must be passed a namespace. 136eda14cbcSMatt Macydnl # 137eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_POSIX_ACL_VALID_WITH_NS], [ 138eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([posix_acl_valid_with_ns], [ 139eda14cbcSMatt Macy #include <linux/fs.h> 140eda14cbcSMatt Macy #include <linux/posix_acl.h> 141eda14cbcSMatt Macy ],[ 142eda14cbcSMatt Macy struct user_namespace *user_ns = NULL; 143eda14cbcSMatt Macy const struct posix_acl *acl = NULL; 144eda14cbcSMatt Macy int error; 145eda14cbcSMatt Macy 146eda14cbcSMatt Macy error = posix_acl_valid(user_ns, acl); 147eda14cbcSMatt Macy ]) 148eda14cbcSMatt Macy]) 149eda14cbcSMatt Macy 150eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_POSIX_ACL_VALID_WITH_NS], [ 151eda14cbcSMatt Macy AC_MSG_CHECKING([whether posix_acl_valid() wants user namespace]) 152eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([posix_acl_valid_with_ns], [ 153eda14cbcSMatt Macy AC_MSG_RESULT(yes) 154eda14cbcSMatt Macy AC_DEFINE(HAVE_POSIX_ACL_VALID_WITH_NS, 1, 155eda14cbcSMatt Macy [posix_acl_valid() wants user namespace]) 156eda14cbcSMatt Macy ],[ 157eda14cbcSMatt Macy AC_MSG_RESULT(no) 158eda14cbcSMatt Macy ]) 159eda14cbcSMatt Macy]) 160eda14cbcSMatt Macy 161eda14cbcSMatt Macydnl # 162eda14cbcSMatt Macydnl # 3.1 API change, 163eda14cbcSMatt Macydnl # Check if inode_operations contains the function get_acl 164eda14cbcSMatt Macydnl # 165*53b70c86SMartin Matuskadnl # 5.15 API change, 166*53b70c86SMartin Matuskadnl # Added the bool rcu argument to get_acl for rcu path walk. 167*53b70c86SMartin Matuskadnl # 168eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_GET_ACL], [ 169eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([inode_operations_get_acl], [ 170eda14cbcSMatt Macy #include <linux/fs.h> 171eda14cbcSMatt Macy 172eda14cbcSMatt Macy struct posix_acl *get_acl_fn(struct inode *inode, int type) 173eda14cbcSMatt Macy { return NULL; } 174eda14cbcSMatt Macy 175eda14cbcSMatt Macy static const struct inode_operations 176eda14cbcSMatt Macy iops __attribute__ ((unused)) = { 177eda14cbcSMatt Macy .get_acl = get_acl_fn, 178eda14cbcSMatt Macy }; 179eda14cbcSMatt Macy ],[]) 180*53b70c86SMartin Matuska 181*53b70c86SMartin Matuska ZFS_LINUX_TEST_SRC([inode_operations_get_acl_rcu], [ 182*53b70c86SMartin Matuska #include <linux/fs.h> 183*53b70c86SMartin Matuska 184*53b70c86SMartin Matuska struct posix_acl *get_acl_fn(struct inode *inode, int type, 185*53b70c86SMartin Matuska bool rcu) { return NULL; } 186*53b70c86SMartin Matuska 187*53b70c86SMartin Matuska static const struct inode_operations 188*53b70c86SMartin Matuska iops __attribute__ ((unused)) = { 189*53b70c86SMartin Matuska .get_acl = get_acl_fn, 190*53b70c86SMartin Matuska }; 191*53b70c86SMartin Matuska ],[]) 192eda14cbcSMatt Macy]) 193eda14cbcSMatt Macy 194eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL], [ 195eda14cbcSMatt Macy AC_MSG_CHECKING([whether iops->get_acl() exists]) 196eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([inode_operations_get_acl], [ 197eda14cbcSMatt Macy AC_MSG_RESULT(yes) 198*53b70c86SMartin Matuska AC_DEFINE(HAVE_GET_ACL, 1, [iops->get_acl() exists]) 199*53b70c86SMartin Matuska ],[ 200*53b70c86SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_get_acl_rcu], [ 201*53b70c86SMartin Matuska AC_MSG_RESULT(yes) 202*53b70c86SMartin Matuska AC_DEFINE(HAVE_GET_ACL_RCU, 1, [iops->get_acl() takes rcu]) 203eda14cbcSMatt Macy ],[ 204eda14cbcSMatt Macy ZFS_LINUX_TEST_ERROR([iops->get_acl()]) 205eda14cbcSMatt Macy ]) 206eda14cbcSMatt Macy ]) 207*53b70c86SMartin Matuska]) 208eda14cbcSMatt Macy 209eda14cbcSMatt Macydnl # 210eda14cbcSMatt Macydnl # 3.14 API change, 211eda14cbcSMatt Macydnl # Check if inode_operations contains the function set_acl 212eda14cbcSMatt Macydnl # 21316038816SMartin Matuskadnl # 5.12 API change, 21416038816SMartin Matuskadnl # set_acl() added a user_namespace* parameter first 21516038816SMartin Matuskadnl # 216eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_SET_ACL], [ 21716038816SMartin Matuska ZFS_LINUX_TEST_SRC([inode_operations_set_acl_userns], [ 21816038816SMartin Matuska #include <linux/fs.h> 21916038816SMartin Matuska 22016038816SMartin Matuska int set_acl_fn(struct user_namespace *userns, 22116038816SMartin Matuska struct inode *inode, struct posix_acl *acl, 22216038816SMartin Matuska int type) { return 0; } 22316038816SMartin Matuska 22416038816SMartin Matuska static const struct inode_operations 22516038816SMartin Matuska iops __attribute__ ((unused)) = { 22616038816SMartin Matuska .set_acl = set_acl_fn, 22716038816SMartin Matuska }; 22816038816SMartin Matuska ],[]) 229eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([inode_operations_set_acl], [ 230eda14cbcSMatt Macy #include <linux/fs.h> 231eda14cbcSMatt Macy 232eda14cbcSMatt Macy int set_acl_fn(struct inode *inode, struct posix_acl *acl, 233eda14cbcSMatt Macy int type) { return 0; } 234eda14cbcSMatt Macy 235eda14cbcSMatt Macy static const struct inode_operations 236eda14cbcSMatt Macy iops __attribute__ ((unused)) = { 237eda14cbcSMatt Macy .set_acl = set_acl_fn, 238eda14cbcSMatt Macy }; 239eda14cbcSMatt Macy ],[]) 240eda14cbcSMatt Macy]) 241eda14cbcSMatt Macy 242eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_INODE_OPERATIONS_SET_ACL], [ 243eda14cbcSMatt Macy AC_MSG_CHECKING([whether iops->set_acl() exists]) 24416038816SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_set_acl_userns], [ 245eda14cbcSMatt Macy AC_MSG_RESULT(yes) 246eda14cbcSMatt Macy AC_DEFINE(HAVE_SET_ACL, 1, [iops->set_acl() exists]) 24716038816SMartin Matuska AC_DEFINE(HAVE_SET_ACL_USERNS, 1, [iops->set_acl() takes 4 args]) 24816038816SMartin Matuska ],[ 24916038816SMartin Matuska ZFS_LINUX_TEST_RESULT([inode_operations_set_acl], [ 25016038816SMartin Matuska AC_MSG_RESULT(yes) 25116038816SMartin Matuska AC_DEFINE(HAVE_SET_ACL, 1, [iops->set_acl() exists, takes 3 args]) 252eda14cbcSMatt Macy ],[ 253eda14cbcSMatt Macy AC_MSG_RESULT(no) 254eda14cbcSMatt Macy ]) 255eda14cbcSMatt Macy ]) 25616038816SMartin Matuska]) 257eda14cbcSMatt Macy 258eda14cbcSMatt Macydnl # 259eda14cbcSMatt Macydnl # 4.7 API change, 260eda14cbcSMatt Macydnl # The kernel get_acl will now check cache before calling i_op->get_acl and 261eda14cbcSMatt Macydnl # do set_cached_acl after that, so i_op->get_acl don't need to do that 262eda14cbcSMatt Macydnl # anymore. 263eda14cbcSMatt Macydnl # 264eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_GET_ACL_HANDLE_CACHE], [ 265eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([get_acl_handle_cache], [ 266eda14cbcSMatt Macy #include <linux/fs.h> 267eda14cbcSMatt Macy ],[ 268eda14cbcSMatt Macy void *sentinel __attribute__ ((unused)) = 269eda14cbcSMatt Macy uncached_acl_sentinel(NULL); 270eda14cbcSMatt Macy ]) 271eda14cbcSMatt Macy]) 272eda14cbcSMatt Macy 273eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_GET_ACL_HANDLE_CACHE], [ 274eda14cbcSMatt Macy AC_MSG_CHECKING([whether uncached_acl_sentinel() exists]) 275eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([get_acl_handle_cache], [ 276eda14cbcSMatt Macy AC_MSG_RESULT(yes) 277eda14cbcSMatt Macy AC_DEFINE(HAVE_KERNEL_GET_ACL_HANDLE_CACHE, 1, 278eda14cbcSMatt Macy [uncached_acl_sentinel() exists]) 279eda14cbcSMatt Macy ],[ 280eda14cbcSMatt Macy AC_MSG_RESULT(no) 281eda14cbcSMatt Macy ]) 282eda14cbcSMatt Macy]) 283eda14cbcSMatt Macy 284eda14cbcSMatt Macydnl # 285eda14cbcSMatt Macydnl # 4.16 kernel: check if struct posix_acl acl.a_refcount is a refcount_t. 286eda14cbcSMatt Macydnl # It's an atomic_t on older kernels. 287eda14cbcSMatt Macydnl # 288eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_ACL_HAS_REFCOUNT], [ 289eda14cbcSMatt Macy ZFS_LINUX_TEST_SRC([acl_refcount], [ 290eda14cbcSMatt Macy #include <linux/backing-dev.h> 291eda14cbcSMatt Macy #include <linux/refcount.h> 292eda14cbcSMatt Macy #include <linux/posix_acl.h> 293eda14cbcSMatt Macy ],[ 294eda14cbcSMatt Macy struct posix_acl acl; 295eda14cbcSMatt Macy refcount_t *r __attribute__ ((unused)) = &acl.a_refcount; 296eda14cbcSMatt Macy ]) 297eda14cbcSMatt Macy]) 298eda14cbcSMatt Macy 299eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_ACL_HAS_REFCOUNT], [ 300eda14cbcSMatt Macy AC_MSG_CHECKING([whether posix_acl has refcount_t]) 301eda14cbcSMatt Macy ZFS_LINUX_TEST_RESULT([acl_refcount], [ 302eda14cbcSMatt Macy AC_MSG_RESULT(yes) 303eda14cbcSMatt Macy AC_DEFINE(HAVE_ACL_REFCOUNT, 1, [posix_acl has refcount_t]) 304eda14cbcSMatt Macy ],[ 305eda14cbcSMatt Macy AC_MSG_RESULT(no) 306eda14cbcSMatt Macy ]) 307eda14cbcSMatt Macy]) 308eda14cbcSMatt Macy 309eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_SRC_ACL], [ 310eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_POSIX_ACL_RELEASE 311eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_SET_CACHED_ACL_USABLE 312eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_POSIX_ACL_CHMOD 313eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T 314eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_POSIX_ACL_VALID_WITH_NS 315eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_GET_ACL 316eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_INODE_OPERATIONS_SET_ACL 317eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_GET_ACL_HANDLE_CACHE 318eda14cbcSMatt Macy ZFS_AC_KERNEL_SRC_ACL_HAS_REFCOUNT 319eda14cbcSMatt Macy]) 320eda14cbcSMatt Macy 321eda14cbcSMatt MacyAC_DEFUN([ZFS_AC_KERNEL_ACL], [ 322eda14cbcSMatt Macy ZFS_AC_KERNEL_POSIX_ACL_RELEASE 323eda14cbcSMatt Macy ZFS_AC_KERNEL_SET_CACHED_ACL_USABLE 324eda14cbcSMatt Macy ZFS_AC_KERNEL_POSIX_ACL_CHMOD 325eda14cbcSMatt Macy ZFS_AC_KERNEL_POSIX_ACL_EQUIV_MODE_WANTS_UMODE_T 326eda14cbcSMatt Macy ZFS_AC_KERNEL_POSIX_ACL_VALID_WITH_NS 327eda14cbcSMatt Macy ZFS_AC_KERNEL_INODE_OPERATIONS_GET_ACL 328eda14cbcSMatt Macy ZFS_AC_KERNEL_INODE_OPERATIONS_SET_ACL 329eda14cbcSMatt Macy ZFS_AC_KERNEL_GET_ACL_HANDLE_CACHE 330eda14cbcSMatt Macy ZFS_AC_KERNEL_ACL_HAS_REFCOUNT 331eda14cbcSMatt Macy]) 332