diff options
| author | J. Bruce Fields <bfields@citi.umich.edu> | 2007-02-16 04:28:30 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-16 11:14:01 -0500 |
| commit | 28e05dd8457c7a7fa1c3faac169a95e0ce4b4a12 (patch) | |
| tree | 850b9db205c45d82706ec283fd13de74c1516630 /include/linux | |
| parent | 575a6290f035b16e3301014d9b176422ec9062bb (diff) | |
[PATCH] knfsd: nfsd4: represent nfsv4 acl with array instead of linked list
Simplify the memory management and code a bit by representing acls with an
array instead of a linked list.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/nfs4.h | 3 | ||||
| -rw-r--r-- | include/linux/nfs4_acl.h | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index db05182ca0e8..1be5be88debe 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h | |||
| @@ -105,12 +105,11 @@ struct nfs4_ace { | |||
| 105 | uint32_t access_mask; | 105 | uint32_t access_mask; |
| 106 | int whotype; | 106 | int whotype; |
| 107 | uid_t who; | 107 | uid_t who; |
| 108 | struct list_head l_ace; | ||
| 109 | }; | 108 | }; |
| 110 | 109 | ||
| 111 | struct nfs4_acl { | 110 | struct nfs4_acl { |
| 112 | uint32_t naces; | 111 | uint32_t naces; |
| 113 | struct list_head ace_head; | 112 | struct nfs4_ace aces[0]; |
| 114 | }; | 113 | }; |
| 115 | 114 | ||
| 116 | typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; | 115 | typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; |
diff --git a/include/linux/nfs4_acl.h b/include/linux/nfs4_acl.h index 22aff4d01f20..409b6e02f337 100644 --- a/include/linux/nfs4_acl.h +++ b/include/linux/nfs4_acl.h | |||
| @@ -39,9 +39,12 @@ | |||
| 39 | 39 | ||
| 40 | #include <linux/posix_acl.h> | 40 | #include <linux/posix_acl.h> |
| 41 | 41 | ||
| 42 | struct nfs4_acl *nfs4_acl_new(void); | 42 | /* Maximum ACL we'll accept from client; chosen (somewhat arbitrarily) to |
| 43 | void nfs4_acl_free(struct nfs4_acl *); | 43 | * fit in a page: */ |
| 44 | int nfs4_acl_add_ace(struct nfs4_acl *, u32, u32, u32, int, uid_t); | 44 | #define NFS4_ACL_MAX 170 |
| 45 | |||
| 46 | struct nfs4_acl *nfs4_acl_new(int); | ||
| 47 | void nfs4_acl_add_ace(struct nfs4_acl *, u32, u32, u32, int, uid_t); | ||
| 45 | int nfs4_acl_get_whotype(char *, u32); | 48 | int nfs4_acl_get_whotype(char *, u32); |
| 46 | int nfs4_acl_write_who(int who, char *p); | 49 | int nfs4_acl_write_who(int who, char *p); |
| 47 | int nfs4_acl_permission(struct nfs4_acl *acl, uid_t owner, gid_t group, | 50 | int nfs4_acl_permission(struct nfs4_acl *acl, uid_t owner, gid_t group, |
