~ubuntu-branches/ubuntu/lucid/linux-rt/lucid

« back to all changes in this revision

Viewing changes to fs/xfs/xfs_acl.h

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich
  • Date: 2009-08-05 23:00:52 UTC
  • Revision ID: james.westby@ubuntu.com-20090805230052-7xedvqcyk9dnnxb2
Tags: 2.6.31-1.1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
#ifndef __XFS_ACL_H__
19
19
#define __XFS_ACL_H__
20
20
 
21
 
/*
22
 
 * Access Control Lists
23
 
 */
24
 
typedef __uint16_t      xfs_acl_perm_t;
25
 
typedef __int32_t       xfs_acl_tag_t;
26
 
typedef __int32_t       xfs_acl_id_t;
 
21
struct inode;
 
22
struct posix_acl;
 
23
struct xfs_inode;
27
24
 
28
25
#define XFS_ACL_MAX_ENTRIES 25
29
26
#define XFS_ACL_NOT_PRESENT (-1)
30
27
 
31
 
typedef struct xfs_acl_entry {
32
 
        xfs_acl_tag_t   ae_tag;
33
 
        xfs_acl_id_t    ae_id;
34
 
        xfs_acl_perm_t  ae_perm;
35
 
} xfs_acl_entry_t;
36
 
 
37
 
typedef struct xfs_acl {
38
 
        __int32_t       acl_cnt;
39
 
        xfs_acl_entry_t acl_entry[XFS_ACL_MAX_ENTRIES];
40
 
} xfs_acl_t;
 
28
/* On-disk XFS access control list structure */
 
29
struct xfs_acl {
 
30
        __be32          acl_cnt;
 
31
        struct xfs_acl_entry {
 
32
                __be32  ae_tag;
 
33
                __be32  ae_id;
 
34
                __be16  ae_perm;
 
35
        } acl_entry[XFS_ACL_MAX_ENTRIES];
 
36
};
41
37
 
42
38
/* On-disk XFS extended attribute names */
43
 
#define SGI_ACL_FILE    "SGI_ACL_FILE"
44
 
#define SGI_ACL_DEFAULT "SGI_ACL_DEFAULT"
 
39
#define SGI_ACL_FILE            "SGI_ACL_FILE"
 
40
#define SGI_ACL_DEFAULT         "SGI_ACL_DEFAULT"
45
41
#define SGI_ACL_FILE_SIZE       (sizeof(SGI_ACL_FILE)-1)
46
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
44
#ifdef CONFIG_XFS_POSIX_ACL
52
 
 
53
 
struct vattr;
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
 
 
 
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 int posix_acl_access_exists(struct inode *inode);
 
50
extern int posix_acl_default_exists(struct inode *inode);
 
51
 
 
52
extern struct xattr_handler xfs_xattr_system_handler;
81
53
#else
82
 
#define xfs_acl_zone_init(zone,name)
83
 
#define xfs_acl_zone_destroy(zone)
84
 
#define xfs_acl_vset(v,p,sz,t)  (-EOPNOTSUPP)
85
 
#define xfs_acl_vget(v,p,sz,t)  (-EOPNOTSUPP)
86
 
#define xfs_acl_vremove(v,t)    (-EOPNOTSUPP)
87
 
#define xfs_acl_vhasacl_access(v)       (0)
88
 
#define xfs_acl_vhasacl_default(v)      (0)
89
 
#define _ACL_ALLOC(a)           (1)     /* successfully allocate nothing */
90
 
#define _ACL_FREE(a)            ((void)0)
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
 
 
 
54
# define xfs_check_acl                                  NULL
 
55
# define xfs_get_acl(inode, type)                       NULL
 
56
# define xfs_inherit_acl(inode, default_acl)            0
 
57
# define xfs_acl_chmod(inode)                           0
 
58
# define posix_acl_access_exists(inode)                 0
 
59
# define posix_acl_default_exists(inode)                0
 
60
#endif /* CONFIG_XFS_POSIX_ACL */
98
61
#endif  /* __XFS_ACL_H__ */