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 <
[email protected]
>
8
* Andy Adamson <
[email protected]
>
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