1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _BCACHEFS_ACL_H 3#define _BCACHEFS_ACL_H 4 5struct bch_inode_unpacked; 6struct bch_hash_info; 7struct bch_inode_info; 8struct posix_acl; 9 10#define BCH_ACL_VERSION 0x0001 11 12typedef struct { 13 __le16 e_tag; 14 __le16 e_perm; 15 __le32 e_id; 16} bch_acl_entry; 17 18typedef struct { 19 __le16 e_tag; 20 __le16 e_perm; 21} bch_acl_entry_short; 22 23typedef struct { 24 __le32 a_version; 25} bch_acl_header; 26 27void bch2_acl_to_text(struct printbuf *, const void *, size_t); 28 29#ifdef CONFIG_BCACHEFS_POSIX_ACL 30 31struct posix_acl *bch2_get_acl(struct mnt_idmap *, struct dentry *, int); 32 33int bch2_set_acl_trans(struct btree_trans *, subvol_inum, 34 struct bch_inode_unpacked *, 35 struct posix_acl *, int); 36int bch2_set_acl(struct mnt_idmap *, struct dentry *, struct posix_acl *, int); 37int bch2_acl_chmod(struct btree_trans *, subvol_inum, 38 struct bch_inode_unpacked *, 39 umode_t, struct posix_acl **); 40 41#else 42 43static 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 50static 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