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