Blame view
fs/nfsd/xdr.h
3.97 KB
7663dacd9
|
1 |
/* XDR types for nfsd. This is mainly a typing exercise. */ |
1da177e4c
|
2 3 4 |
#ifndef LINUX_NFSD_H #define LINUX_NFSD_H |
1da177e4c
|
5 |
#include <linux/vfs.h> |
9a74af213
|
6 |
#include "nfsd.h" |
1557aca79
|
7 |
#include "nfsfh.h" |
1da177e4c
|
8 9 10 11 12 13 14 15 16 17 18 19 20 |
struct nfsd_fhandle { struct svc_fh fh; }; struct nfsd_sattrargs { struct svc_fh fh; struct iattr attrs; }; struct nfsd_diropargs { struct svc_fh fh; char * name; |
29d5e5553
|
21 |
unsigned int len; |
1da177e4c
|
22 23 24 25 26 27 |
}; struct nfsd_readargs { struct svc_fh fh; __u32 offset; __u32 count; |
1da177e4c
|
28 29 30 31 32 33 34 |
int vlen; }; struct nfsd_writeargs { svc_fh fh; __u32 offset; int len; |
1da177e4c
|
35 36 37 38 39 40 |
int vlen; }; struct nfsd_createargs { struct svc_fh fh; char * name; |
29d5e5553
|
41 |
unsigned int len; |
1da177e4c
|
42 43 44 45 46 47 |
struct iattr attrs; }; struct nfsd_renameargs { struct svc_fh ffh; char * fname; |
29d5e5553
|
48 |
unsigned int flen; |
1da177e4c
|
49 50 |
struct svc_fh tfh; char * tname; |
29d5e5553
|
51 |
unsigned int tlen; |
1da177e4c
|
52 53 54 55 56 57 58 59 60 61 62 |
}; struct nfsd_readlinkargs { struct svc_fh fh; char * buffer; }; struct nfsd_linkargs { struct svc_fh ffh; struct svc_fh tfh; char * tname; |
29d5e5553
|
63 |
unsigned int tlen; |
1da177e4c
|
64 65 66 67 68 |
}; struct nfsd_symlinkargs { struct svc_fh ffh; char * fname; |
29d5e5553
|
69 |
unsigned int flen; |
1da177e4c
|
70 |
char * tname; |
48b4ba3fd
|
71 |
unsigned int tlen; |
1da177e4c
|
72 73 74 75 76 77 78 |
struct iattr attrs; }; struct nfsd_readdirargs { struct svc_fh fh; __u32 cookie; __u32 count; |
131a21c21
|
79 |
__be32 * buffer; |
1da177e4c
|
80 81 82 83 |
}; struct nfsd_attrstat { struct svc_fh fh; |
a334de286
|
84 |
struct kstat stat; |
1da177e4c
|
85 86 87 88 |
}; struct nfsd_diropres { struct svc_fh fh; |
a334de286
|
89 |
struct kstat stat; |
1da177e4c
|
90 91 92 93 94 95 96 97 98 |
}; struct nfsd_readlinkres { int len; }; struct nfsd_readres { struct svc_fh fh; unsigned long count; |
a334de286
|
99 |
struct kstat stat; |
1da177e4c
|
100 101 102 103 104 105 |
}; struct nfsd_readdirres { int count; struct readdir_cd common; |
131a21c21
|
106 |
__be32 * buffer; |
1da177e4c
|
107 |
int buflen; |
131a21c21
|
108 |
__be32 * offset; |
1da177e4c
|
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
}; struct nfsd_statfsres { struct kstatfs stats; }; /* * Storage requirements for XDR arguments and results. */ union nfsd_xdrstore { struct nfsd_sattrargs sattr; struct nfsd_diropargs dirop; struct nfsd_readargs read; struct nfsd_writeargs write; struct nfsd_createargs create; struct nfsd_renameargs rename; struct nfsd_linkargs link; struct nfsd_symlinkargs symlink; struct nfsd_readdirargs readdir; }; #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore) |
131a21c21
|
131 132 133 |
int nfssvc_decode_void(struct svc_rqst *, __be32 *, void *); int nfssvc_decode_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *); int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
134 |
struct nfsd_sattrargs *); |
131a21c21
|
135 |
int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
136 |
struct nfsd_diropargs *); |
131a21c21
|
137 |
int nfssvc_decode_readargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
138 |
struct nfsd_readargs *); |
131a21c21
|
139 |
int nfssvc_decode_writeargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
140 |
struct nfsd_writeargs *); |
131a21c21
|
141 |
int nfssvc_decode_createargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
142 |
struct nfsd_createargs *); |
131a21c21
|
143 |
int nfssvc_decode_renameargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
144 |
struct nfsd_renameargs *); |
131a21c21
|
145 |
int nfssvc_decode_readlinkargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
146 |
struct nfsd_readlinkargs *); |
131a21c21
|
147 |
int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
148 |
struct nfsd_linkargs *); |
131a21c21
|
149 |
int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
150 |
struct nfsd_symlinkargs *); |
131a21c21
|
151 |
int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *, |
1da177e4c
|
152 |
struct nfsd_readdirargs *); |
131a21c21
|
153 154 155 156 157 158 159 |
int nfssvc_encode_void(struct svc_rqst *, __be32 *, void *); int nfssvc_encode_attrstat(struct svc_rqst *, __be32 *, struct nfsd_attrstat *); int nfssvc_encode_diropres(struct svc_rqst *, __be32 *, struct nfsd_diropres *); int nfssvc_encode_readlinkres(struct svc_rqst *, __be32 *, struct nfsd_readlinkres *); int nfssvc_encode_readres(struct svc_rqst *, __be32 *, struct nfsd_readres *); int nfssvc_encode_statfsres(struct svc_rqst *, __be32 *, struct nfsd_statfsres *); int nfssvc_encode_readdirres(struct svc_rqst *, __be32 *, struct nfsd_readdirres *); |
1da177e4c
|
160 |
|
a0ad13ef6
|
161 162 |
int nfssvc_encode_entry(void *, const char *name, int namlen, loff_t offset, u64 ino, unsigned int); |
1da177e4c
|
163 |
|
131a21c21
|
164 |
int nfssvc_release_fhandle(struct svc_rqst *, __be32 *, struct nfsd_fhandle *); |
1da177e4c
|
165 |
|
a257cdd0e
|
166 |
/* Helper functions for NFSv2 ACL code */ |
131a21c21
|
167 168 |
__be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp); __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp); |
a257cdd0e
|
169 |
|
1da177e4c
|
170 |
#endif /* LINUX_NFSD_H */ |