Lines Matching refs:acl
34 struct posix_acl *acl) in btrfs_update_cached_acl() argument
39 *p_acl = posix_acl_dup(acl); in btrfs_update_cached_acl()
48 struct posix_acl *acl = NULL, **p_acl; in btrfs_get_acl() local
65 acl = posix_acl_dup(*p_acl); in btrfs_get_acl()
68 if (acl) in btrfs_get_acl()
69 return acl; in btrfs_get_acl()
79 acl = posix_acl_from_xattr(value, size); in btrfs_get_acl()
80 btrfs_update_cached_acl(inode, p_acl, acl); in btrfs_get_acl()
84 acl = NULL; in btrfs_get_acl()
85 btrfs_update_cached_acl(inode, p_acl, acl); in btrfs_get_acl()
88 return acl; in btrfs_get_acl()
94 struct posix_acl *acl; in btrfs_xattr_get_acl() local
97 acl = btrfs_get_acl(inode, type); in btrfs_xattr_get_acl()
99 if (IS_ERR(acl)) in btrfs_xattr_get_acl()
100 return PTR_ERR(acl); in btrfs_xattr_get_acl()
101 if (acl == NULL) in btrfs_xattr_get_acl()
103 ret = posix_acl_to_xattr(acl, value, size); in btrfs_xattr_get_acl()
104 posix_acl_release(acl); in btrfs_xattr_get_acl()
112 static int btrfs_set_acl(struct inode *inode, struct posix_acl *acl, int type) in btrfs_set_acl() argument
120 if (acl) { in btrfs_set_acl()
121 ret = posix_acl_valid(acl); in btrfs_set_acl()
130 ret = posix_acl_equiv_mode(acl, &mode); in btrfs_set_acl()
140 return acl ? -EINVAL : 0; in btrfs_set_acl()
148 if (acl) { in btrfs_set_acl()
149 size = posix_acl_xattr_size(acl->a_count); in btrfs_set_acl()
156 ret = posix_acl_to_xattr(acl, value, size); in btrfs_set_acl()
167 btrfs_update_cached_acl(inode, p_acl, acl); in btrfs_set_acl()
176 struct posix_acl *acl = NULL; in btrfs_xattr_set_acl() local
179 acl = posix_acl_from_xattr(value, size); in btrfs_xattr_set_acl()
180 if (acl == NULL) { in btrfs_xattr_set_acl()
183 } else if (IS_ERR(acl)) { in btrfs_xattr_set_acl()
184 return PTR_ERR(acl); in btrfs_xattr_set_acl()
188 ret = btrfs_set_acl(inode, acl, type); in btrfs_xattr_set_acl()
190 posix_acl_release(acl); in btrfs_xattr_set_acl()
222 struct posix_acl *acl; in btrfs_check_acl() local
225 acl = btrfs_get_acl(inode, ACL_TYPE_ACCESS); in btrfs_check_acl()
227 if (IS_ERR(acl)) in btrfs_check_acl()
228 return PTR_ERR(acl); in btrfs_check_acl()
229 if (acl) { in btrfs_check_acl()
230 error = posix_acl_permission(inode, acl, mask); in btrfs_check_acl()
231 posix_acl_release(acl); in btrfs_check_acl()
244 struct posix_acl *acl = NULL; in btrfs_init_acl() local
253 acl = btrfs_get_acl(dir, ACL_TYPE_DEFAULT); in btrfs_init_acl()
254 if (IS_ERR(acl)) in btrfs_init_acl()
255 return PTR_ERR(acl); in btrfs_init_acl()
258 if (!acl) in btrfs_init_acl()
262 if (IS_POSIXACL(dir) && acl) { in btrfs_init_acl()
267 ret = btrfs_set_acl(inode, acl, ACL_TYPE_DEFAULT); in btrfs_init_acl()
271 clone = posix_acl_clone(acl, GFP_NOFS); in btrfs_init_acl()
288 posix_acl_release(acl); in btrfs_init_acl()
295 struct posix_acl *acl, *clone; in btrfs_acl_chmod() local
304 acl = btrfs_get_acl(inode, ACL_TYPE_ACCESS); in btrfs_acl_chmod()
305 if (IS_ERR(acl) || !acl) in btrfs_acl_chmod()
306 return PTR_ERR(acl); in btrfs_acl_chmod()
308 clone = posix_acl_clone(acl, GFP_KERNEL); in btrfs_acl_chmod()
309 posix_acl_release(acl); in btrfs_acl_chmod()