acl.h (1903B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#include <linux/init.h> 3#include <linux/posix_acl.h> 4 5#define REISERFS_ACL_VERSION 0x0001 6 7typedef struct { 8 __le16 e_tag; 9 __le16 e_perm; 10 __le32 e_id; 11} reiserfs_acl_entry; 12 13typedef struct { 14 __le16 e_tag; 15 __le16 e_perm; 16} reiserfs_acl_entry_short; 17 18typedef struct { 19 __le32 a_version; 20} reiserfs_acl_header; 21 22static inline size_t reiserfs_acl_size(int count) 23{ 24 if (count <= 4) { 25 return sizeof(reiserfs_acl_header) + 26 count * sizeof(reiserfs_acl_entry_short); 27 } else { 28 return sizeof(reiserfs_acl_header) + 29 4 * sizeof(reiserfs_acl_entry_short) + 30 (count - 4) * sizeof(reiserfs_acl_entry); 31 } 32} 33 34static inline int reiserfs_acl_count(size_t size) 35{ 36 ssize_t s; 37 size -= sizeof(reiserfs_acl_header); 38 s = size - 4 * sizeof(reiserfs_acl_entry_short); 39 if (s < 0) { 40 if (size % sizeof(reiserfs_acl_entry_short)) 41 return -1; 42 return size / sizeof(reiserfs_acl_entry_short); 43 } else { 44 if (s % sizeof(reiserfs_acl_entry)) 45 return -1; 46 return s / sizeof(reiserfs_acl_entry) + 4; 47 } 48} 49 50#ifdef CONFIG_REISERFS_FS_POSIX_ACL 51struct posix_acl *reiserfs_get_acl(struct inode *inode, int type, bool rcu); 52int reiserfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode, 53 struct posix_acl *acl, int type); 54int reiserfs_acl_chmod(struct inode *inode); 55int reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th, 56 struct inode *dir, struct dentry *dentry, 57 struct inode *inode); 58int reiserfs_cache_default_acl(struct inode *dir); 59 60#else 61 62#define reiserfs_cache_default_acl(inode) 0 63#define reiserfs_get_acl NULL 64#define reiserfs_set_acl NULL 65 66static inline int reiserfs_acl_chmod(struct inode *inode) 67{ 68 return 0; 69} 70 71static inline int 72reiserfs_inherit_default_acl(struct reiserfs_transaction_handle *th, 73 const struct inode *dir, struct dentry *dentry, 74 struct inode *inode) 75{ 76 return 0; 77} 78#endif