diff options
Diffstat (limited to 'fs/xfs/xfs_acl.h')
| -rw-r--r-- | fs/xfs/xfs_acl.h | 97 |
1 files changed, 32 insertions, 65 deletions
diff --git a/fs/xfs/xfs_acl.h b/fs/xfs/xfs_acl.h index 642f1db4def4..63dc1f2efad5 100644 --- a/fs/xfs/xfs_acl.h +++ b/fs/xfs/xfs_acl.h | |||
| @@ -18,81 +18,48 @@ | |||
| 18 | #ifndef __XFS_ACL_H__ | 18 | #ifndef __XFS_ACL_H__ |
| 19 | #define __XFS_ACL_H__ | 19 | #define __XFS_ACL_H__ |
| 20 | 20 | ||
| 21 | /* | 21 | struct inode; |
| 22 | * Access Control Lists | 22 | struct posix_acl; |
| 23 | */ | 23 | struct xfs_inode; |
| 24 | typedef __uint16_t xfs_acl_perm_t; | ||
| 25 | typedef __int32_t xfs_acl_tag_t; | ||
| 26 | typedef __int32_t xfs_acl_id_t; | ||
| 27 | 24 | ||
| 28 | #define XFS_ACL_MAX_ENTRIES 25 | 25 | #define XFS_ACL_MAX_ENTRIES 25 |
| 29 | #define XFS_ACL_NOT_PRESENT (-1) | 26 | #define XFS_ACL_NOT_PRESENT (-1) |
| 30 | 27 | ||
| 31 | typedef struct xfs_acl_entry { | 28 | /* On-disk XFS access control list structure */ |
| 32 | xfs_acl_tag_t ae_tag; | 29 | struct xfs_acl { |
| 33 | xfs_acl_id_t ae_id; | 30 | __be32 acl_cnt; |
| 34 | xfs_acl_perm_t ae_perm; | 31 | struct xfs_acl_entry { |
| 35 | } xfs_acl_entry_t; | 32 | __be32 ae_tag; |
| 36 | 33 | __be32 ae_id; | |
| 37 | typedef struct xfs_acl { | 34 | __be16 ae_perm; |
| 38 | __int32_t acl_cnt; | 35 | } acl_entry[XFS_ACL_MAX_ENTRIES]; |
| 39 | xfs_acl_entry_t acl_entry[XFS_ACL_MAX_ENTRIES]; | 36 | }; |
| 40 | } xfs_acl_t; | ||
| 41 | 37 | ||
| 42 | /* On-disk XFS extended attribute names */ | 38 | /* On-disk XFS extended attribute names */ |
| 43 | #define SGI_ACL_FILE "SGI_ACL_FILE" | 39 | #define SGI_ACL_FILE "SGI_ACL_FILE" |
| 44 | #define SGI_ACL_DEFAULT "SGI_ACL_DEFAULT" | 40 | #define SGI_ACL_DEFAULT "SGI_ACL_DEFAULT" |
| 45 | #define SGI_ACL_FILE_SIZE (sizeof(SGI_ACL_FILE)-1) | 41 | #define SGI_ACL_FILE_SIZE (sizeof(SGI_ACL_FILE)-1) |
| 46 | #define SGI_ACL_DEFAULT_SIZE (sizeof(SGI_ACL_DEFAULT)-1) | 42 | #define SGI_ACL_DEFAULT_SIZE (sizeof(SGI_ACL_DEFAULT)-1) |
| 47 | 43 | ||
| 48 | #define _ACL_TYPE_ACCESS 1 | ||
| 49 | #define _ACL_TYPE_DEFAULT 2 | ||
| 50 | |||
| 51 | #ifdef CONFIG_XFS_POSIX_ACL | 44 | #ifdef CONFIG_XFS_POSIX_ACL |
| 45 | extern int xfs_check_acl(struct inode *inode, int mask); | ||
| 46 | extern struct posix_acl *xfs_get_acl(struct inode *inode, int type); | ||
| 47 | extern int xfs_inherit_acl(struct inode *inode, struct posix_acl *default_acl); | ||
| 48 | extern int xfs_acl_chmod(struct inode *inode); | ||
| 49 | extern void xfs_inode_init_acls(struct xfs_inode *ip); | ||
| 50 | extern void xfs_inode_clear_acls(struct xfs_inode *ip); | ||
| 51 | extern int posix_acl_access_exists(struct inode *inode); | ||
| 52 | extern int posix_acl_default_exists(struct inode *inode); | ||
| 52 | 53 | ||
| 53 | struct vattr; | 54 | extern struct xattr_handler xfs_xattr_system_handler; |
| 54 | struct xfs_inode; | ||
| 55 | |||
| 56 | extern struct kmem_zone *xfs_acl_zone; | ||
| 57 | #define xfs_acl_zone_init(zone, name) \ | ||
| 58 | (zone) = kmem_zone_init(sizeof(xfs_acl_t), (name)) | ||
| 59 | #define xfs_acl_zone_destroy(zone) kmem_zone_destroy(zone) | ||
| 60 | |||
| 61 | extern int xfs_acl_inherit(struct inode *, mode_t mode, xfs_acl_t *); | ||
| 62 | extern int xfs_acl_iaccess(struct xfs_inode *, mode_t, cred_t *); | ||
| 63 | extern int xfs_acl_vtoacl(struct inode *, xfs_acl_t *, xfs_acl_t *); | ||
| 64 | extern int xfs_acl_vhasacl_access(struct inode *); | ||
| 65 | extern int xfs_acl_vhasacl_default(struct inode *); | ||
| 66 | extern int xfs_acl_vset(struct inode *, void *, size_t, int); | ||
| 67 | extern int xfs_acl_vget(struct inode *, void *, size_t, int); | ||
| 68 | extern int xfs_acl_vremove(struct inode *, int); | ||
| 69 | |||
| 70 | #define _ACL_PERM_INVALID(perm) ((perm) & ~(ACL_READ|ACL_WRITE|ACL_EXECUTE)) | ||
| 71 | |||
| 72 | #define _ACL_INHERIT(c,m,d) (xfs_acl_inherit(c,m,d)) | ||
| 73 | #define _ACL_GET_ACCESS(pv,pa) (xfs_acl_vtoacl(pv,pa,NULL) == 0) | ||
| 74 | #define _ACL_GET_DEFAULT(pv,pd) (xfs_acl_vtoacl(pv,NULL,pd) == 0) | ||
| 75 | #define _ACL_ACCESS_EXISTS xfs_acl_vhasacl_access | ||
| 76 | #define _ACL_DEFAULT_EXISTS xfs_acl_vhasacl_default | ||
| 77 | |||
| 78 | #define _ACL_ALLOC(a) ((a) = kmem_zone_alloc(xfs_acl_zone, KM_SLEEP)) | ||
| 79 | #define _ACL_FREE(a) ((a)? kmem_zone_free(xfs_acl_zone, (a)):(void)0) | ||
| 80 | |||
| 81 | #else | 55 | #else |
| 82 | #define xfs_acl_zone_init(zone,name) | 56 | # define xfs_check_acl NULL |
| 83 | #define xfs_acl_zone_destroy(zone) | 57 | # define xfs_get_acl(inode, type) NULL |
| 84 | #define xfs_acl_vset(v,p,sz,t) (-EOPNOTSUPP) | 58 | # define xfs_inherit_acl(inode, default_acl) 0 |
| 85 | #define xfs_acl_vget(v,p,sz,t) (-EOPNOTSUPP) | 59 | # define xfs_acl_chmod(inode) 0 |
| 86 | #define xfs_acl_vremove(v,t) (-EOPNOTSUPP) | 60 | # define xfs_inode_init_acls(ip) |
| 87 | #define xfs_acl_vhasacl_access(v) (0) | 61 | # define xfs_inode_clear_acls(ip) |
| 88 | #define xfs_acl_vhasacl_default(v) (0) | 62 | # define posix_acl_access_exists(inode) 0 |
| 89 | #define _ACL_ALLOC(a) (1) /* successfully allocate nothing */ | 63 | # define posix_acl_default_exists(inode) 0 |
| 90 | #define _ACL_FREE(a) ((void)0) | 64 | #endif /* CONFIG_XFS_POSIX_ACL */ |
| 91 | #define _ACL_INHERIT(c,m,d) (0) | ||
| 92 | #define _ACL_GET_ACCESS(pv,pa) (0) | ||
| 93 | #define _ACL_GET_DEFAULT(pv,pd) (0) | ||
| 94 | #define _ACL_ACCESS_EXISTS (NULL) | ||
| 95 | #define _ACL_DEFAULT_EXISTS (NULL) | ||
| 96 | #endif | ||
| 97 | |||
| 98 | #endif /* __XFS_ACL_H__ */ | 65 | #endif /* __XFS_ACL_H__ */ |
