xref: /linux/fs/bcachefs/acl.h (revision 6e7fd890f1d6ac83805409e9c346240de2705584)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_ACL_H
3 #define _BCACHEFS_ACL_H
4 
5 struct bch_inode_unpacked;
6 struct bch_hash_info;
7 struct bch_inode_info;
8 struct posix_acl;
9 
10 #define BCH_ACL_VERSION	0x0001
11 
12 typedef struct {
13 	__le16		e_tag;
14 	__le16		e_perm;
15 	__le32		e_id;
16 } bch_acl_entry;
17 
18 typedef struct {
19 	__le16		e_tag;
20 	__le16		e_perm;
21 } bch_acl_entry_short;
22 
23 typedef struct {
24 	__le32		a_version;
25 } bch_acl_header;
26 
27 void bch2_acl_to_text(struct printbuf *, const void *, size_t);
28 
29 #ifdef CONFIG_BCACHEFS_POSIX_ACL
30 
31 struct posix_acl *bch2_get_acl(struct inode *, int, bool);
32 
33 int bch2_set_acl_trans(struct btree_trans *, subvol_inum,
34 		       struct bch_inode_unpacked *,
35 		       struct posix_acl *, int);
36 int bch2_set_acl(struct mnt_idmap *, struct dentry *, struct posix_acl *, int);
37 int bch2_acl_chmod(struct btree_trans *, subvol_inum,
38 		   struct bch_inode_unpacked *,
39 		   umode_t, struct posix_acl **);
40 
41 #else
42 
43 static inline int bch2_set_acl_trans(struct btree_trans *trans, subvol_inum inum,
44 				     struct bch_inode_unpacked *inode_u,
45 				     struct posix_acl *acl, int type)
46 {
47 	return 0;
48 }
49 
50 static inline int bch2_acl_chmod(struct btree_trans *trans, subvol_inum inum,
51 				 struct bch_inode_unpacked *inode,
52 				 umode_t mode,
53 				 struct posix_acl **new_acl)
54 {
55 	return 0;
56 }
57 
58 #endif /* CONFIG_BCACHEFS_POSIX_ACL */
59 
60 #endif /* _BCACHEFS_ACL_H */
61