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
bch2_set_acl_trans(struct btree_trans * trans,subvol_inum inum,struct bch_inode_unpacked * inode_u,struct posix_acl * acl,int type)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
bch2_acl_chmod(struct btree_trans * trans,subvol_inum inum,struct bch_inode_unpacked * inode,umode_t mode,struct posix_acl ** new_acl)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