Linux 6.13-rc4
[linux.git] / fs / bcachefs / acl.h
blobfe730a6bf0c18c00c5c3db93ede033af5a63d62c
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHEFS_ACL_H
3 #define _BCACHEFS_ACL_H
5 struct bch_inode_unpacked;
6 struct bch_hash_info;
7 struct bch_inode_info;
8 struct posix_acl;
10 #define BCH_ACL_VERSION 0x0001
12 typedef struct {
13 __le16 e_tag;
14 __le16 e_perm;
15 __le32 e_id;
16 } bch_acl_entry;
18 typedef struct {
19 __le16 e_tag;
20 __le16 e_perm;
21 } bch_acl_entry_short;
23 typedef struct {
24 __le32 a_version;
25 } bch_acl_header;
27 void bch2_acl_to_text(struct printbuf *, const void *, size_t);
29 #ifdef CONFIG_BCACHEFS_POSIX_ACL
31 struct posix_acl *bch2_get_acl(struct inode *, int, bool);
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 **);
41 #else
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)
47 return 0;
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)
55 return 0;
58 #endif /* CONFIG_BCACHEFS_POSIX_ACL */
60 #endif /* _BCACHEFS_ACL_H */