- Stephen Rothwell: APM updates
[davej-history.git] / include / linux / nfsd / xdr3.h
bloba5ca90410204607405934280a41e4263e9426121
1 /*
2 * linux/include/linux/nfsd/xdr3.h
4 * XDR types for NFSv3 in nfsd.
6 * Copyright (C) 1996-1998, Olaf Kirch <okir@monad.swb.de>
7 */
9 #ifndef _LINUX_NFSD_XDR3_H
10 #define _LINUX_NFSD_XDR3_H
12 #include <linux/nfsd/xdr.h>
14 struct nfsd3_sattrargs {
15 struct svc_fh fh;
16 struct iattr attrs;
17 int check_guard;
18 time_t guardtime;
21 struct nfsd3_diropargs {
22 struct svc_fh fh;
23 char * name;
24 int len;
27 struct nfsd3_accessargs {
28 struct svc_fh fh;
29 unsigned int access;
32 struct nfsd3_readargs {
33 struct svc_fh fh;
34 __u64 offset;
35 __u32 count;
38 struct nfsd3_writeargs {
39 svc_fh fh;
40 __u64 offset;
41 __u32 count;
42 int stable;
43 __u8 * data;
44 int len;
47 struct nfsd3_createargs {
48 struct svc_fh fh;
49 char * name;
50 int len;
51 int createmode;
52 struct iattr attrs;
53 __u32 * verf;
56 struct nfsd3_mknodargs {
57 struct svc_fh fh;
58 char * name;
59 int len;
60 __u32 ftype;
61 __u32 major, minor;
62 struct iattr attrs;
65 struct nfsd3_renameargs {
66 struct svc_fh ffh;
67 char * fname;
68 int flen;
69 struct svc_fh tfh;
70 char * tname;
71 int tlen;
74 struct nfsd3_linkargs {
75 struct svc_fh ffh;
76 struct svc_fh tfh;
77 char * tname;
78 int tlen;
81 struct nfsd3_symlinkargs {
82 struct svc_fh ffh;
83 char * fname;
84 int flen;
85 char * tname;
86 int tlen;
87 struct iattr attrs;
90 struct nfsd3_readdirargs {
91 struct svc_fh fh;
92 __u64 cookie;
93 __u32 dircount;
94 __u32 count;
95 __u32 * verf;
98 struct nfsd3_commitargs {
99 struct svc_fh fh;
100 __u64 offset;
101 __u32 count;
104 struct nfsd3_attrstat {
105 __u32 status;
106 struct svc_fh fh;
109 /* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */
110 struct nfsd3_diropres {
111 __u32 status;
112 struct svc_fh dirfh;
113 struct svc_fh fh;
116 struct nfsd3_accessres {
117 __u32 status;
118 struct svc_fh fh;
119 __u32 access;
122 struct nfsd3_readlinkres {
123 __u32 status;
124 struct svc_fh fh;
125 __u32 len;
128 struct nfsd3_readres {
129 __u32 status;
130 struct svc_fh fh;
131 unsigned long count;
132 int eof;
135 struct nfsd3_writeres {
136 __u32 status;
137 struct svc_fh fh;
138 unsigned long count;
139 int committed;
142 struct nfsd3_renameres {
143 __u32 status;
144 struct svc_fh ffh;
145 struct svc_fh tfh;
148 struct nfsd3_linkres {
149 __u32 status;
150 struct svc_fh tfh;
151 struct svc_fh fh;
154 struct nfsd3_readdirres {
155 __u32 status;
156 struct svc_fh fh;
157 int count;
158 __u32 verf[2];
161 struct nfsd3_fsstatres {
162 __u32 status;
163 struct statfs stats;
164 __u32 invarsec;
167 struct nfsd3_fsinfores {
168 __u32 status;
169 __u32 f_rtmax;
170 __u32 f_rtpref;
171 __u32 f_rtmult;
172 __u32 f_wtmax;
173 __u32 f_wtpref;
174 __u32 f_wtmult;
175 __u32 f_dtpref;
176 __u64 f_maxfilesize;
177 __u32 f_properties;
180 struct nfsd3_pathconfres {
181 __u32 status;
182 __u32 p_link_max;
183 __u32 p_name_max;
184 __u32 p_no_trunc;
185 __u32 p_chown_restricted;
186 __u32 p_case_insensitive;
187 __u32 p_case_preserving;
190 struct nfsd3_commitres {
191 __u32 status;
192 struct svc_fh fh;
195 /* dummy type for release */
196 struct nfsd3_fhandle_pair {
197 __u32 dummy;
198 struct svc_fh fh1;
199 struct svc_fh fh2;
203 * Storage requirements for XDR arguments and results.
205 union nfsd3_xdrstore {
206 struct nfsd3_sattrargs sattrargs;
207 struct nfsd3_diropargs diropargs;
208 struct nfsd3_readargs readargs;
209 struct nfsd3_writeargs writeargs;
210 struct nfsd3_createargs createargs;
211 struct nfsd3_renameargs renameargs;
212 struct nfsd3_linkargs linkargs;
213 struct nfsd3_symlinkargs symlinkargs;
214 struct nfsd3_readdirargs readdirargs;
215 struct nfsd3_diropres diropres;
216 struct nfsd3_accessres accessres;
217 struct nfsd3_readlinkres readlinkres;
218 struct nfsd3_readres readres;
219 struct nfsd3_writeres writeres;
220 struct nfsd3_renameres renameres;
221 struct nfsd3_linkres linkres;
222 struct nfsd3_readdirres readdirres;
223 struct nfsd3_fsstatres fsstatres;
224 struct nfsd3_fsinfores fsinfores;
225 struct nfsd3_pathconfres pathconfres;
226 struct nfsd3_commitres commitres;
229 #define NFS3_SVC_XDRSIZE sizeof(union nfsd3_xdrstore)
231 int nfs3svc_decode_fhandle(struct svc_rqst *, u32 *, struct svc_fh *);
232 int nfs3svc_decode_sattrargs(struct svc_rqst *, u32 *,
233 struct nfsd3_sattrargs *);
234 int nfs3svc_decode_diropargs(struct svc_rqst *, u32 *,
235 struct nfsd3_diropargs *);
236 int nfs3svc_decode_accessargs(struct svc_rqst *, u32 *,
237 struct nfsd3_accessargs *);
238 int nfs3svc_decode_readargs(struct svc_rqst *, u32 *,
239 struct nfsd3_readargs *);
240 int nfs3svc_decode_writeargs(struct svc_rqst *, u32 *,
241 struct nfsd3_writeargs *);
242 int nfs3svc_decode_createargs(struct svc_rqst *, u32 *,
243 struct nfsd3_createargs *);
244 int nfs3svc_decode_mkdirargs(struct svc_rqst *, u32 *,
245 struct nfsd3_createargs *);
246 int nfs3svc_decode_mknodargs(struct svc_rqst *, u32 *,
247 struct nfsd3_mknodargs *);
248 int nfs3svc_decode_renameargs(struct svc_rqst *, u32 *,
249 struct nfsd3_renameargs *);
250 int nfs3svc_decode_linkargs(struct svc_rqst *, u32 *,
251 struct nfsd3_linkargs *);
252 int nfs3svc_decode_symlinkargs(struct svc_rqst *, u32 *,
253 struct nfsd3_symlinkargs *);
254 int nfs3svc_decode_readdirargs(struct svc_rqst *, u32 *,
255 struct nfsd3_readdirargs *);
256 int nfs3svc_decode_readdirplusargs(struct svc_rqst *, u32 *,
257 struct nfsd3_readdirargs *);
258 int nfs3svc_decode_commitargs(struct svc_rqst *, u32 *,
259 struct nfsd3_commitargs *);
260 int nfs3svc_encode_voidres(struct svc_rqst *, u32 *, void *);
261 int nfs3svc_encode_attrstat(struct svc_rqst *, u32 *,
262 struct nfsd3_attrstat *);
263 int nfs3svc_encode_wccstat(struct svc_rqst *, u32 *,
264 struct nfsd3_attrstat *);
265 int nfs3svc_encode_diropres(struct svc_rqst *, u32 *,
266 struct nfsd3_diropres *);
267 int nfs3svc_encode_accessres(struct svc_rqst *, u32 *,
268 struct nfsd3_accessres *);
269 int nfs3svc_encode_readlinkres(struct svc_rqst *, u32 *,
270 struct nfsd3_readlinkres *);
271 int nfs3svc_encode_readres(struct svc_rqst *, u32 *, struct nfsd3_readres *);
272 int nfs3svc_encode_writeres(struct svc_rqst *, u32 *, struct nfsd3_writeres *);
273 int nfs3svc_encode_createres(struct svc_rqst *, u32 *,
274 struct nfsd3_diropres *);
275 int nfs3svc_encode_renameres(struct svc_rqst *, u32 *,
276 struct nfsd3_renameres *);
277 int nfs3svc_encode_linkres(struct svc_rqst *, u32 *,
278 struct nfsd3_linkres *);
279 int nfs3svc_encode_readdirres(struct svc_rqst *, u32 *,
280 struct nfsd3_readdirres *);
281 int nfs3svc_encode_fsstatres(struct svc_rqst *, u32 *,
282 struct nfsd3_fsstatres *);
283 int nfs3svc_encode_fsinfores(struct svc_rqst *, u32 *,
284 struct nfsd3_fsinfores *);
285 int nfs3svc_encode_pathconfres(struct svc_rqst *, u32 *,
286 struct nfsd3_pathconfres *);
287 int nfs3svc_encode_commitres(struct svc_rqst *, u32 *,
288 struct nfsd3_commitres *);
290 int nfs3svc_release_fhandle(struct svc_rqst *, u32 *,
291 struct nfsd3_attrstat *);
292 int nfs3svc_release_fhandle2(struct svc_rqst *, u32 *,
293 struct nfsd3_fhandle_pair *);
294 int nfs3svc_encode_entry(struct readdir_cd *, const char *name,
295 int namlen, off_t offset, ino_t ino,
296 unsigned int);
297 int nfs3svc_encode_entry_plus(struct readdir_cd *, const char *name,
298 int namlen, off_t offset, ino_t ino,
299 unsigned int);
302 #endif /* _LINUX_NFSD_XDR3_H */