Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
nfsd
xdr4.h
Go to the documentation of this file.
1
/*
2
* Server-side types for NFSv4.
3
*
4
* Copyright (c) 2002 The Regents of the University of Michigan.
5
* All rights reserved.
6
*
7
* Kendrick Smith <kmsmith@umich.edu>
8
* Andy Adamson <andros@umich.edu>
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
*
14
* 1. Redistributions of source code must retain the above copyright
15
* notice, this list of conditions and the following disclaimer.
16
* 2. Redistributions in binary form must reproduce the above copyright
17
* notice, this list of conditions and the following disclaimer in the
18
* documentation and/or other materials provided with the distribution.
19
* 3. Neither the name of the University nor the names of its
20
* contributors may be used to endorse or promote products derived
21
* from this software without specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
24
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
* DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
*
35
*/
36
37
#ifndef _LINUX_NFSD_XDR4_H
38
#define _LINUX_NFSD_XDR4_H
39
40
#include "
state.h
"
41
#include "
nfsd.h
"
42
43
#define NFSD4_MAX_TAGLEN 128
44
#define XDR_LEN(n) (((n) + 3) & ~3)
45
46
#define CURRENT_STATE_ID_FLAG (1<<0)
47
#define SAVED_STATE_ID_FLAG (1<<1)
48
49
#define SET_STATE_ID(c, f) ((c)->sid_flags |= (f))
50
#define HAS_STATE_ID(c, f) ((c)->sid_flags & (f))
51
#define CLEAR_STATE_ID(c, f) ((c)->sid_flags &= ~(f))
52
53
struct
nfsd4_compound_state
{
54
struct
svc_fh
current_fh
;
55
struct
svc_fh
save_fh
;
56
struct
nfs4_stateowner
*
replay_owner
;
57
/* For sessions DRC */
58
struct
nfsd4_session
*
session
;
59
struct
nfsd4_slot
*
slot
;
60
__be32
*
datap
;
61
size_t
iovlen
;
62
u32
minorversion
;
63
__be32
status
;
64
stateid_t
current_stateid
;
65
stateid_t
save_stateid
;
66
/* to indicate current and saved state id presents */
67
u32
sid_flags
;
68
};
69
70
static
inline
bool
nfsd4_has_session(
struct
nfsd4_compound_state
*
cs
)
71
{
72
return
cs->
slot
!=
NULL
;
73
}
74
75
struct
nfsd4_change_info
{
76
u32
atomic
;
77
bool
change_supported
;
78
u32
before_ctime_sec
;
79
u32
before_ctime_nsec
;
80
u64
before_change
;
81
u32
after_ctime_sec
;
82
u32
after_ctime_nsec
;
83
u64
after_change
;
84
};
85
86
struct
nfsd4_access
{
87
u32
ac_req_access
;
/* request */
88
u32
ac_supported
;
/* response */
89
u32
ac_resp_access
;
/* response */
90
};
91
92
struct
nfsd4_close
{
93
u32
cl_seqid
;
/* request */
94
stateid_t
cl_stateid
;
/* request+response */
95
};
96
97
struct
nfsd4_commit
{
98
u64
co_offset
;
/* request */
99
u32
co_count
;
/* request */
100
nfs4_verifier
co_verf
;
/* response */
101
};
102
103
struct
nfsd4_create
{
104
u32
cr_namelen
;
/* request */
105
char
*
cr_name
;
/* request */
106
u32
cr_type
;
/* request */
107
union
{
/* request */
108
struct
{
109
u32
namelen
;
110
char
*
name
;
111
}
link
;
/* NF4LNK */
112
struct
{
113
u32
specdata1
;
114
u32
specdata2
;
115
}
dev
;
/* NF4BLK, NF4CHR */
116
}
u
;
117
u32
cr_bmval
[3];
/* request */
118
struct
iattr
cr_iattr
;
/* request */
119
struct
nfsd4_change_info
cr_cinfo
;
/* response */
120
struct
nfs4_acl
*
cr_acl
;
121
};
122
#define cr_linklen u.link.namelen
123
#define cr_linkname u.link.name
124
#define cr_specdata1 u.dev.specdata1
125
#define cr_specdata2 u.dev.specdata2
126
127
struct
nfsd4_delegreturn
{
128
stateid_t
dr_stateid
;
129
};
130
131
struct
nfsd4_getattr
{
132
u32
ga_bmval
[3];
/* request */
133
struct
svc_fh
*
ga_fhp
;
/* response */
134
};
135
136
struct
nfsd4_link
{
137
u32
li_namelen
;
/* request */
138
char
*
li_name
;
/* request */
139
struct
nfsd4_change_info
li_cinfo
;
/* response */
140
};
141
142
struct
nfsd4_lock_denied
{
143
clientid_t
ld_clientid
;
144
struct
xdr_netobj
ld_owner
;
145
u64
ld_start
;
146
u64
ld_length
;
147
u32
ld_type
;
148
};
149
150
struct
nfsd4_lock
{
151
/* request */
152
u32
lk_type
;
153
u32
lk_reclaim
;
/* boolean */
154
u64
lk_offset
;
155
u64
lk_length
;
156
u32
lk_is_new
;
157
union
{
158
struct
{
159
u32
open_seqid
;
160
stateid_t
open_stateid
;
161
u32
lock_seqid
;
162
clientid_t
clientid
;
163
struct
xdr_netobj
owner
;
164
}
new
;
165
struct
{
166
stateid_t
lock_stateid
;
167
u32
lock_seqid
;
168
}
old
;
169
}
v
;
170
171
/* response */
172
union
{
173
struct
{
174
stateid_t
stateid
;
175
}
ok
;
176
struct
nfsd4_lock_denied
denied
;
177
}
u
;
178
};
179
#define lk_new_open_seqid v.new.open_seqid
180
#define lk_new_open_stateid v.new.open_stateid
181
#define lk_new_lock_seqid v.new.lock_seqid
182
#define lk_new_clientid v.new.clientid
183
#define lk_new_owner v.new.owner
184
#define lk_old_lock_stateid v.old.lock_stateid
185
#define lk_old_lock_seqid v.old.lock_seqid
186
187
#define lk_rflags u.ok.rflags
188
#define lk_resp_stateid u.ok.stateid
189
#define lk_denied u.denied
190
191
192
struct
nfsd4_lockt
{
193
u32
lt_type
;
194
clientid_t
lt_clientid
;
195
struct
xdr_netobj
lt_owner
;
196
u64
lt_offset
;
197
u64
lt_length
;
198
struct
nfsd4_lock_denied
lt_denied
;
199
};
200
201
202
struct
nfsd4_locku
{
203
u32
lu_type
;
204
u32
lu_seqid
;
205
stateid_t
lu_stateid
;
206
u64
lu_offset
;
207
u64
lu_length
;
208
};
209
210
211
struct
nfsd4_lookup
{
212
u32
lo_len
;
/* request */
213
char
*
lo_name
;
/* request */
214
};
215
216
struct
nfsd4_putfh
{
217
u32
pf_fhlen
;
/* request */
218
char
*
pf_fhval
;
/* request */
219
};
220
221
struct
nfsd4_open
{
222
u32
op_claim_type
;
/* request */
223
struct
xdr_netobj
op_fname
;
/* request - everything but CLAIM_PREV */
224
u32
op_delegate_type
;
/* request - CLAIM_PREV only */
225
stateid_t
op_delegate_stateid
;
/* request - response */
226
u32
op_why_no_deleg
;
/* response - DELEG_NONE_EXT only */
227
u32
op_create
;
/* request */
228
u32
op_createmode
;
/* request */
229
u32
op_bmval
[3];
/* request */
230
struct
iattr
iattr
;
/* UNCHECKED4, GUARDED4, EXCLUSIVE4_1 */
231
nfs4_verifier
op_verf
__attribute__
((
aligned
(32)));
232
/* EXCLUSIVE4 */
233
clientid_t
op_clientid
;
/* request */
234
struct
xdr_netobj
op_owner
;
/* request */
235
u32
op_seqid
;
/* request */
236
u32
op_share_access
;
/* request */
237
u32
op_share_deny
;
/* request */
238
u32
op_deleg_want
;
/* request */
239
stateid_t
op_stateid
;
/* response */
240
u32
op_recall
;
/* recall */
241
struct
nfsd4_change_info
op_cinfo
;
/* response */
242
u32
op_rflags
;
/* response */
243
bool
op_truncate
;
/* used during processing */
244
bool
op_created
;
/* used during processing */
245
struct
nfs4_openowner
*
op_openowner
;
/* used during processing */
246
struct
nfs4_file
*
op_file
;
/* used during processing */
247
struct
nfs4_ol_stateid
*
op_stp
;
/* used during processing */
248
struct
nfs4_acl
*
op_acl
;
249
};
250
#define op_iattr iattr
251
252
struct
nfsd4_open_confirm
{
253
stateid_t
oc_req_stateid
/* request */
;
254
u32
oc_seqid
/* request */
;
255
stateid_t
oc_resp_stateid
/* response */
;
256
};
257
258
struct
nfsd4_open_downgrade
{
259
stateid_t
od_stateid
;
260
u32
od_seqid
;
261
u32
od_share_access
;
/* request */
262
u32
od_deleg_want
;
/* request */
263
u32
od_share_deny
;
/* request */
264
};
265
266
267
struct
nfsd4_read
{
268
stateid_t
rd_stateid
;
/* request */
269
u64
rd_offset
;
/* request */
270
u32
rd_length
;
/* request */
271
int
rd_vlen
;
272
struct
file
*
rd_filp
;
273
274
struct
svc_rqst
*
rd_rqstp
;
/* response */
275
struct
svc_fh
*
rd_fhp
;
/* response */
276
};
277
278
struct
nfsd4_readdir
{
279
u64
rd_cookie
;
/* request */
280
nfs4_verifier
rd_verf
;
/* request */
281
u32
rd_dircount
;
/* request */
282
u32
rd_maxcount
;
/* request */
283
u32
rd_bmval
[3];
/* request */
284
struct
svc_rqst
*
rd_rqstp
;
/* response */
285
struct
svc_fh
*
rd_fhp
;
/* response */
286
287
struct
readdir_cd
common
;
288
__be32
*
buffer
;
289
int
buflen
;
290
__be32
*
offset
;
291
};
292
293
struct
nfsd4_release_lockowner
{
294
clientid_t
rl_clientid
;
295
struct
xdr_netobj
rl_owner
;
296
};
297
struct
nfsd4_readlink
{
298
struct
svc_rqst
*
rl_rqstp
;
/* request */
299
struct
svc_fh
*
rl_fhp
;
/* request */
300
};
301
302
struct
nfsd4_remove
{
303
u32
rm_namelen
;
/* request */
304
char
*
rm_name
;
/* request */
305
struct
nfsd4_change_info
rm_cinfo
;
/* response */
306
};
307
308
struct
nfsd4_rename
{
309
u32
rn_snamelen
;
/* request */
310
char
*
rn_sname
;
/* request */
311
u32
rn_tnamelen
;
/* request */
312
char
*
rn_tname
;
/* request */
313
struct
nfsd4_change_info
rn_sinfo
;
/* response */
314
struct
nfsd4_change_info
rn_tinfo
;
/* response */
315
};
316
317
struct
nfsd4_secinfo
{
318
u32
si_namelen
;
/* request */
319
char
*
si_name
;
/* request */
320
struct
svc_export
*
si_exp
;
/* response */
321
};
322
323
struct
nfsd4_secinfo_no_name
{
324
u32
sin_style
;
/* request */
325
struct
svc_export
*
sin_exp
;
/* response */
326
};
327
328
struct
nfsd4_setattr
{
329
stateid_t
sa_stateid
;
/* request */
330
u32
sa_bmval
[3];
/* request */
331
struct
iattr
sa_iattr
;
/* request */
332
struct
nfs4_acl
*
sa_acl
;
333
};
334
335
struct
nfsd4_setclientid
{
336
nfs4_verifier
se_verf
;
/* request */
337
struct
xdr_netobj
se_name
;
338
u32
se_callback_prog
;
/* request */
339
u32
se_callback_netid_len
;
/* request */
340
char
*
se_callback_netid_val
;
/* request */
341
u32
se_callback_addr_len
;
/* request */
342
char
*
se_callback_addr_val
;
/* request */
343
u32
se_callback_ident
;
/* request */
344
clientid_t
se_clientid
;
/* response */
345
nfs4_verifier
se_confirm
;
/* response */
346
};
347
348
struct
nfsd4_setclientid_confirm
{
349
clientid_t
sc_clientid
;
350
nfs4_verifier
sc_confirm
;
351
};
352
353
struct
nfsd4_saved_compoundargs
{
354
__be32
*
p
;
355
__be32
*
end
;
356
int
pagelen
;
357
struct
page
**
pagelist
;
358
};
359
360
struct
nfsd4_test_stateid_id
{
361
__be32
ts_id_status
;
362
stateid_t
ts_id_stateid
;
363
struct
list_head
ts_id_list
;
364
};
365
366
struct
nfsd4_test_stateid
{
367
u32
ts_num_ids
;
368
struct
list_head
ts_stateid_list
;
369
};
370
371
struct
nfsd4_free_stateid
{
372
stateid_t
fr_stateid
;
/* request */
373
__be32
fr_status
;
/* response */
374
};
375
376
/* also used for NVERIFY */
377
struct
nfsd4_verify
{
378
u32
ve_bmval
[3];
/* request */
379
u32
ve_attrlen
;
/* request */
380
char
*
ve_attrval
;
/* request */
381
};
382
383
struct
nfsd4_write
{
384
stateid_t
wr_stateid
;
/* request */
385
u64
wr_offset
;
/* request */
386
u32
wr_stable_how
;
/* request */
387
u32
wr_buflen
;
/* request */
388
int
wr_vlen
;
389
390
u32
wr_bytes_written
;
/* response */
391
u32
wr_how_written
;
/* response */
392
nfs4_verifier
wr_verifier
;
/* response */
393
};
394
395
struct
nfsd4_exchange_id
{
396
nfs4_verifier
verifier
;
397
struct
xdr_netobj
clname
;
398
u32
flags
;
399
clientid_t
clientid
;
400
u32
seqid
;
401
int
spa_how
;
402
};
403
404
struct
nfsd4_sequence
{
405
struct
nfs4_sessionid
sessionid
;
/* request/response */
406
u32
seqid
;
/* request/response */
407
u32
slotid
;
/* request/response */
408
u32
maxslots
;
/* request/response */
409
u32
cachethis
;
/* request */
410
#if 0
411
u32
target_maxslots;
/* response */
412
#endif
/* not yet */
413
u32
status_flags
;
/* response */
414
};
415
416
struct
nfsd4_destroy_session
{
417
struct
nfs4_sessionid
sessionid
;
418
};
419
420
struct
nfsd4_destroy_clientid
{
421
clientid_t
clientid
;
422
};
423
424
struct
nfsd4_reclaim_complete
{
425
u32
rca_one_fs
;
426
};
427
428
struct
nfsd4_op
{
429
int
opnum
;
430
__be32
status
;
431
union
{
432
struct
nfsd4_access
access
;
433
struct
nfsd4_close
close
;
434
struct
nfsd4_commit
commit
;
435
struct
nfsd4_create
create
;
436
struct
nfsd4_delegreturn
delegreturn
;
437
struct
nfsd4_getattr
getattr
;
438
struct
svc_fh
*
getfh
;
439
struct
nfsd4_link
link
;
440
struct
nfsd4_lock
lock
;
441
struct
nfsd4_lockt
lockt
;
442
struct
nfsd4_locku
locku
;
443
struct
nfsd4_lookup
lookup
;
444
struct
nfsd4_verify
nverify
;
445
struct
nfsd4_open
open
;
446
struct
nfsd4_open_confirm
open_confirm
;
447
struct
nfsd4_open_downgrade
open_downgrade
;
448
struct
nfsd4_putfh
putfh
;
449
struct
nfsd4_read
read
;
450
struct
nfsd4_readdir
readdir
;
451
struct
nfsd4_readlink
readlink
;
452
struct
nfsd4_remove
remove
;
453
struct
nfsd4_rename
rename
;
454
clientid_t
renew
;
455
struct
nfsd4_secinfo
secinfo
;
456
struct
nfsd4_setattr
setattr
;
457
struct
nfsd4_setclientid
setclientid
;
458
struct
nfsd4_setclientid_confirm
setclientid_confirm
;
459
struct
nfsd4_verify
verify
;
460
struct
nfsd4_write
write
;
461
struct
nfsd4_release_lockowner
release_lockowner
;
462
463
/* NFSv4.1 */
464
struct
nfsd4_exchange_id
exchange_id
;
465
struct
nfsd4_bind_conn_to_session
bind_conn_to_session
;
466
struct
nfsd4_create_session
create_session
;
467
struct
nfsd4_destroy_session
destroy_session
;
468
struct
nfsd4_sequence
sequence
;
469
struct
nfsd4_reclaim_complete
reclaim_complete
;
470
struct
nfsd4_test_stateid
test_stateid
;
471
struct
nfsd4_free_stateid
free_stateid
;
472
}
u
;
473
struct
nfs4_replay
*
replay
;
474
};
475
476
bool
nfsd4_cache_this_op
(
struct
nfsd4_op
*);
477
478
struct
nfsd4_compoundargs
{
479
/* scratch variables for XDR decode */
480
__be32
*
p
;
481
__be32
*
end
;
482
struct
page
**
pagelist
;
483
int
pagelen
;
484
__be32
tmp
[8];
485
__be32
*
tmpp
;
486
struct
tmpbuf
{
487
struct
tmpbuf
*
next
;
488
void
(*
release
)(
const
void
*);
489
void
*
buf
;
490
} *
to_free
;
491
492
struct
svc_rqst
*
rqstp
;
493
494
u32
taglen
;
495
char
*
tag
;
496
u32
minorversion
;
497
u32
opcnt
;
498
struct
nfsd4_op
*
ops
;
499
struct
nfsd4_op
iops
[8];
500
int
cachetype
;
501
};
502
503
struct
nfsd4_compoundres
{
504
/* scratch variables for XDR encode */
505
__be32
*
p
;
506
__be32
*
end
;
507
struct
xdr_buf *
xbuf
;
508
struct
svc_rqst
*
rqstp
;
509
510
u32
taglen
;
511
char
*
tag
;
512
u32
opcnt
;
513
__be32
*
tagp
;
/* tag, opcount encode location */
514
struct
nfsd4_compound_state
cstate
;
515
};
516
517
static
inline
bool
nfsd4_is_solo_sequence(
struct
nfsd4_compoundres
*
resp
)
518
{
519
struct
nfsd4_compoundargs
*
args
= resp->
rqstp
->rq_argp;
520
return
resp->
opcnt
== 1 && args->
ops
[0].opnum ==
OP_SEQUENCE
;
521
}
522
523
static
inline
bool
nfsd4_not_cached(
struct
nfsd4_compoundres
*
resp
)
524
{
525
return
!(resp->
cstate
.slot->sl_flags &
NFSD4_SLOT_CACHETHIS
)
526
|| nfsd4_is_solo_sequence(resp);
527
}
528
529
#define NFS4_SVC_XDRSIZE sizeof(struct nfsd4_compoundargs)
530
531
static
inline
void
532
set_change_info(
struct
nfsd4_change_info
*cinfo,
struct
svc_fh
*fhp)
533
{
534
BUG_ON
(!fhp->fh_pre_saved);
535
cinfo->
atomic
= fhp->fh_post_saved;
536
cinfo->
change_supported
=
IS_I_VERSION
(fhp->
fh_dentry
->d_inode);
537
538
cinfo->
before_change
= fhp->fh_pre_change;
539
cinfo->
after_change
= fhp->fh_post_change;
540
cinfo->
before_ctime_sec
= fhp->fh_pre_ctime.tv_sec;
541
cinfo->
before_ctime_nsec
= fhp->fh_pre_ctime.tv_nsec;
542
cinfo->
after_ctime_sec
= fhp->fh_post_attr.ctime.tv_sec;
543
cinfo->
after_ctime_nsec
= fhp->fh_post_attr.ctime.tv_nsec;
544
545
}
546
547
int
nfs4svc_encode_voidres
(
struct
svc_rqst
*,
__be32
*,
void
*);
548
int
nfs4svc_decode_compoundargs
(
struct
svc_rqst
*,
__be32
*,
549
struct
nfsd4_compoundargs
*);
550
int
nfs4svc_encode_compoundres
(
struct
svc_rqst
*,
__be32
*,
551
struct
nfsd4_compoundres
*);
552
__be32
nfsd4_check_resp_size
(
struct
nfsd4_compoundres
*,
u32
);
553
void
nfsd4_encode_operation
(
struct
nfsd4_compoundres
*,
struct
nfsd4_op
*);
554
void
nfsd4_encode_replay
(
struct
nfsd4_compoundres
*resp,
struct
nfsd4_op
*
op
);
555
__be32
nfsd4_encode_fattr
(
struct
svc_fh
*fhp,
struct
svc_export
*
exp
,
556
struct
dentry
*
dentry
,
__be32
*
buffer
,
int
*countp,
557
u32
*bmval,
struct
svc_rqst
*,
int
ignore_crossmnt);
558
extern
__be32
nfsd4_setclientid
(
struct
svc_rqst
*
rqstp
,
559
struct
nfsd4_compound_state
*,
560
struct
nfsd4_setclientid
*setclid);
561
extern
__be32
nfsd4_setclientid_confirm
(
struct
svc_rqst
*
rqstp
,
562
struct
nfsd4_compound_state
*,
563
struct
nfsd4_setclientid_confirm
*setclientid_confirm);
564
extern
void
nfsd4_store_cache_entry
(
struct
nfsd4_compoundres
*resp);
565
extern
__be32
nfsd4_replay_cache_entry
(
struct
nfsd4_compoundres
*resp,
566
struct
nfsd4_sequence
*seq);
567
extern
__be32
nfsd4_exchange_id
(
struct
svc_rqst
*
rqstp
,
568
struct
nfsd4_compound_state
*,
struct
nfsd4_exchange_id
*);
569
extern
__be32
nfsd4_bind_conn_to_session
(
struct
svc_rqst
*,
struct
nfsd4_compound_state
*,
struct
nfsd4_bind_conn_to_session
*);
570
extern
__be32
nfsd4_create_session
(
struct
svc_rqst
*,
571
struct
nfsd4_compound_state
*,
572
struct
nfsd4_create_session
*);
573
extern
__be32
nfsd4_sequence
(
struct
svc_rqst
*,
574
struct
nfsd4_compound_state
*,
575
struct
nfsd4_sequence
*);
576
extern
__be32
nfsd4_destroy_session
(
struct
svc_rqst
*,
577
struct
nfsd4_compound_state
*,
578
struct
nfsd4_destroy_session
*);
579
extern
__be32
nfsd4_destroy_clientid
(
struct
svc_rqst
*,
struct
nfsd4_compound_state
*,
struct
nfsd4_destroy_clientid
*);
580
__be32
nfsd4_reclaim_complete
(
struct
svc_rqst
*,
struct
nfsd4_compound_state
*,
struct
nfsd4_reclaim_complete
*);
581
extern
__be32
nfsd4_process_open1
(
struct
nfsd4_compound_state
*,
582
struct
nfsd4_open
*
open
);
583
extern
__be32
nfsd4_process_open2
(
struct
svc_rqst
*
rqstp
,
584
struct
svc_fh
*current_fh,
struct
nfsd4_open
*
open
);
585
extern
void
nfsd4_cleanup_open_state
(
struct
nfsd4_open
*
open
,
__be32
status
);
586
extern
__be32
nfsd4_open_confirm
(
struct
svc_rqst
*
rqstp
,
587
struct
nfsd4_compound_state
*,
struct
nfsd4_open_confirm
*oc);
588
extern
__be32
nfsd4_close
(
struct
svc_rqst
*
rqstp
,
589
struct
nfsd4_compound_state
*,
590
struct
nfsd4_close
*close);
591
extern
__be32
nfsd4_open_downgrade
(
struct
svc_rqst
*
rqstp
,
592
struct
nfsd4_compound_state
*,
593
struct
nfsd4_open_downgrade
*od);
594
extern
__be32
nfsd4_lock
(
struct
svc_rqst
*
rqstp
,
struct
nfsd4_compound_state
*,
595
struct
nfsd4_lock
*lock);
596
extern
__be32
nfsd4_lockt
(
struct
svc_rqst
*
rqstp
,
597
struct
nfsd4_compound_state
*,
598
struct
nfsd4_lockt
*lockt);
599
extern
__be32
nfsd4_locku
(
struct
svc_rqst
*
rqstp
,
600
struct
nfsd4_compound_state
*,
601
struct
nfsd4_locku
*locku);
602
extern
__be32
603
nfsd4_release_lockowner
(
struct
svc_rqst
*
rqstp
,
604
struct
nfsd4_compound_state
*,
605
struct
nfsd4_release_lockowner
*rlockowner);
606
extern
int
nfsd4_release_compoundargs
(
void
*
rq
,
__be32
*
p
,
void
*resp);
607
extern
__be32
nfsd4_delegreturn
(
struct
svc_rqst
*
rqstp
,
608
struct
nfsd4_compound_state
*,
struct
nfsd4_delegreturn
*dr);
609
extern
__be32
nfsd4_renew
(
struct
svc_rqst
*
rqstp
,
610
struct
nfsd4_compound_state
*,
clientid_t
*
clid
);
611
extern
__be32
nfsd4_test_stateid
(
struct
svc_rqst
*
rqstp
,
612
struct
nfsd4_compound_state
*,
struct
nfsd4_test_stateid
*test_stateid);
613
extern
__be32
nfsd4_free_stateid
(
struct
svc_rqst
*
rqstp
,
614
struct
nfsd4_compound_state
*,
struct
nfsd4_free_stateid
*free_stateid);
615
#endif
616
617
/*
618
* Local variables:
619
* c-basic-offset: 8
620
* End:
621
*/
Generated on Thu Jan 10 2013 14:48:57 for Linux Kernel by
1.8.2