Blame view

include/linux/nfs_xdr.h 38.8 KB
b24413180   Greg Kroah-Hartman   License cleanup: ...
1
  /* SPDX-License-Identifier: GPL-2.0 */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
  #ifndef _LINUX_NFS_XDR_H
  #define _LINUX_NFS_XDR_H
b7fa0554c   Andreas Gruenbacher   [PATCH] NFS: Add ...
4
  #include <linux/nfsacl.h>
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
5
  #include <linux/sunrpc/gss_api.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6

40859d7ee   Chuck Lever   NFS: support larg...
7
8
9
10
11
12
13
14
15
  /*
   * To change the maximum rsize and wsize supported by the NFS client, adjust
   * NFS_MAX_FILE_IO_SIZE.  64KB is a typical maximum, but some servers can
   * support a megabyte or more.  The default is left at 4096 bytes, which is
   * reasonable for NFS over UDP.
   */
  #define NFS_MAX_FILE_IO_SIZE	(1048576U)
  #define NFS_DEF_FILE_IO_SIZE	(4096U)
  #define NFS_MIN_FILE_IO_SIZE	(1024U)
6926afd19   Trond Myklebust   NFSv4: Save the o...
16
17
18
19
  struct nfs4_string {
  	unsigned int len;
  	char *data;
  };
8b4bdcf89   Trond Myklebust   NFS: Store the fi...
20
21
22
  struct nfs_fsid {
  	uint64_t		major;
  	uint64_t		minor;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
23
  };
8b4bdcf89   Trond Myklebust   NFS: Store the fi...
24
25
26
27
28
29
30
  /*
   * Helper for checking equality between 2 fsids.
   */
  static inline int nfs_fsid_equal(const struct nfs_fsid *a, const struct nfs_fsid *b)
  {
  	return a->major == b->major && a->minor == b->minor;
  }
88034c3d8   Andy Adamson   NFSv4.1 mdsthresh...
31
32
33
34
35
36
37
38
  struct nfs4_threshold {
  	__u32	bm;
  	__u32	l_type;
  	__u64	rd_sz;
  	__u64	wr_sz;
  	__u64	rd_io_sz;
  	__u64	wr_io_sz;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
39
  struct nfs_fattr {
9e6e70f8d   Trond Myklebust   NFSv4: Support NF...
40
  	unsigned int		valid;		/* which fields are valid */
bca794785   Trond Myklebust   NFS: Fix the type...
41
  	umode_t			mode;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42
  	__u32			nlink;
54f834cd5   Eric W. Biederman   nfs: Convert stru...
43
44
  	kuid_t			uid;
  	kgid_t			gid;
9fa8d66f1   Richard Kennedy   NFS: remove 8 byt...
45
  	dev_t			rdev;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
46
47
48
49
50
51
52
53
54
55
  	__u64			size;
  	union {
  		struct {
  			__u32	blocksize;
  			__u32	blocks;
  		} nfs2;
  		struct {
  			__u64	used;
  		} nfs3;
  	} du;
8b4bdcf89   Trond Myklebust   NFS: Store the fi...
56
  	struct nfs_fsid		fsid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
57
  	__u64			fileid;
28331a46d   Trond Myklebust   NFSv4: Ensure we ...
58
  	__u64			mounted_on_fileid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
59
60
61
  	struct timespec		atime;
  	struct timespec		mtime;
  	struct timespec		ctime;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
62
63
  	__u64			change_attr;	/* NFSv4 change attribute */
  	__u64			pre_change_attr;/* pre-op NFSv4 change attribute */
1ca277d88   Trond Myklebust   NFS: Shrink the s...
64
65
66
  	__u64			pre_size;	/* pre_op_attr.size	  */
  	struct timespec		pre_mtime;	/* pre_op_attr.mtime	  */
  	struct timespec		pre_ctime;	/* pre_op_attr.ctime	  */
33801147a   Trond Myklebust   NFS: Optimise ino...
67
  	unsigned long		time_start;
4704f0e27   Trond Myklebust   NFS: Fix the reso...
68
  	unsigned long		gencount;
6926afd19   Trond Myklebust   NFSv4: Save the o...
69
70
  	struct nfs4_string	*owner_name;
  	struct nfs4_string	*group_name;
88034c3d8   Andy Adamson   NFSv4.1 mdsthresh...
71
  	struct nfs4_threshold	*mdsthreshold;	/* pNFS threshold hints */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
72
  };
9e6e70f8d   Trond Myklebust   NFSv4: Support NF...
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
  #define NFS_ATTR_FATTR_TYPE		(1U << 0)
  #define NFS_ATTR_FATTR_MODE		(1U << 1)
  #define NFS_ATTR_FATTR_NLINK		(1U << 2)
  #define NFS_ATTR_FATTR_OWNER		(1U << 3)
  #define NFS_ATTR_FATTR_GROUP		(1U << 4)
  #define NFS_ATTR_FATTR_RDEV		(1U << 5)
  #define NFS_ATTR_FATTR_SIZE		(1U << 6)
  #define NFS_ATTR_FATTR_PRESIZE		(1U << 7)
  #define NFS_ATTR_FATTR_BLOCKS_USED	(1U << 8)
  #define NFS_ATTR_FATTR_SPACE_USED	(1U << 9)
  #define NFS_ATTR_FATTR_FSID		(1U << 10)
  #define NFS_ATTR_FATTR_FILEID		(1U << 11)
  #define NFS_ATTR_FATTR_ATIME		(1U << 12)
  #define NFS_ATTR_FATTR_MTIME		(1U << 13)
  #define NFS_ATTR_FATTR_CTIME		(1U << 14)
  #define NFS_ATTR_FATTR_PREMTIME		(1U << 15)
  #define NFS_ATTR_FATTR_PRECTIME		(1U << 16)
  #define NFS_ATTR_FATTR_CHANGE		(1U << 17)
  #define NFS_ATTR_FATTR_PRECHANGE	(1U << 18)
81934ddb8   Chuck Lever   NFS: Introduce NF...
92
93
94
95
96
97
  #define NFS_ATTR_FATTR_V4_LOCATIONS	(1U << 19)
  #define NFS_ATTR_FATTR_V4_REFERRAL	(1U << 20)
  #define NFS_ATTR_FATTR_MOUNTPOINT	(1U << 21)
  #define NFS_ATTR_FATTR_MOUNTED_ON_FILEID (1U << 22)
  #define NFS_ATTR_FATTR_OWNER_NAME	(1U << 23)
  #define NFS_ATTR_FATTR_GROUP_NAME	(1U << 24)
e64a4210f   David Quigley   NFSv4: Add label ...
98
  #define NFS_ATTR_FATTR_V4_SECURITY_LABEL (1U << 25)
9e6e70f8d   Trond Myklebust   NFSv4: Support NF...
99
100
101
102
103
104
105
106
107
108
109
110
  
  #define NFS_ATTR_FATTR (NFS_ATTR_FATTR_TYPE \
  		| NFS_ATTR_FATTR_MODE \
  		| NFS_ATTR_FATTR_NLINK \
  		| NFS_ATTR_FATTR_OWNER \
  		| NFS_ATTR_FATTR_GROUP \
  		| NFS_ATTR_FATTR_RDEV \
  		| NFS_ATTR_FATTR_SIZE \
  		| NFS_ATTR_FATTR_FSID \
  		| NFS_ATTR_FATTR_FILEID \
  		| NFS_ATTR_FATTR_ATIME \
  		| NFS_ATTR_FATTR_MTIME \
3a1556e86   Trond Myklebust   NFSv2/v3: Simulat...
111
112
  		| NFS_ATTR_FATTR_CTIME \
  		| NFS_ATTR_FATTR_CHANGE)
9e6e70f8d   Trond Myklebust   NFSv4: Support NF...
113
114
115
116
117
  #define NFS_ATTR_FATTR_V2 (NFS_ATTR_FATTR \
  		| NFS_ATTR_FATTR_BLOCKS_USED)
  #define NFS_ATTR_FATTR_V3 (NFS_ATTR_FATTR \
  		| NFS_ATTR_FATTR_SPACE_USED)
  #define NFS_ATTR_FATTR_V4 (NFS_ATTR_FATTR \
e64a4210f   David Quigley   NFSv4: Add label ...
118
119
  		| NFS_ATTR_FATTR_SPACE_USED \
  		| NFS_ATTR_FATTR_V4_SECURITY_LABEL)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
120
121
  
  /*
3132e49ec   Jeff Layton   pnfs: track multi...
122
123
124
125
126
   * Maximal number of supported layout drivers.
   */
  #define NFS_MAX_LAYOUT_TYPES 8
  
  /*
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
127
128
129
130
131
132
133
134
135
136
137
138
   * Info on the file system
   */
  struct nfs_fsinfo {
  	struct nfs_fattr	*fattr; /* Post-op attributes */
  	__u32			rtmax;	/* max.  read transfer size */
  	__u32			rtpref;	/* pref. read transfer size */
  	__u32			rtmult;	/* reads should be multiple of this */
  	__u32			wtmax;	/* max.  write transfer size */
  	__u32			wtpref;	/* pref. write transfer size */
  	__u32			wtmult;	/* writes should be multiple of this */
  	__u32			dtpref;	/* pref. readdir transfer size */
  	__u64			maxfilesize;
6b96724e5   Ricardo Labiaga   Revalidate caches...
139
  	struct timespec		time_delta; /* server time granularity */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
140
  	__u32			lease_time; /* in seconds */
ca440c383   Jeff Layton   pnfs: add a new m...
141
  	__u32			nlayouttypes; /* number of layouttypes */
3132e49ec   Jeff Layton   pnfs: track multi...
142
  	__u32			layouttype[NFS_MAX_LAYOUT_TYPES]; /* supported pnfs layout driver */
dae100c2b   Fred Isaman   pnfs: ask for lay...
143
  	__u32			blksize; /* preferred pnfs io block size */
2a92ee92d   Peng Tao   nfs: get clone_bl...
144
  	__u32			clone_blksize; /* granularity of a CLONE operation */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
  };
  
  struct nfs_fsstat {
  	struct nfs_fattr	*fattr; /* Post-op attributes */
  	__u64			tbytes;	/* total size in bytes */
  	__u64			fbytes;	/* # of free bytes */
  	__u64			abytes;	/* # of bytes available to user */
  	__u64			tfiles;	/* # of files */
  	__u64			ffiles;	/* # of free files */
  	__u64			afiles;	/* # of files available to user */
  };
  
  struct nfs2_fsstat {
  	__u32			tsize;  /* Server transfer size */
  	__u32			bsize;  /* Filesystem block size */
  	__u32			blocks; /* No. of "bsize" blocks on filesystem */
  	__u32			bfree;  /* No. of free "bsize" blocks */
  	__u32			bavail; /* No. of available "bsize" blocks */
  };
  
  struct nfs_pathconf {
  	struct nfs_fattr	*fattr; /* Post-op attributes */
  	__u32			max_link; /* max # of hard links */
  	__u32			max_namelen; /* max name length */
  };
  
  struct nfs4_change_info {
  	u32			atomic;
  	u64			before;
  	u64			after;
  };
cee54fc94   Trond Myklebust   NFSv4: Add functi...
176
  struct nfs_seqid;
9ff71c3a9   Benny Halevy   nfs41: client xdr...
177

557134a39   Andy Adamson   nfs41: sessions c...
178
179
  /* nfs41 sessions channel attributes */
  struct nfs4_channel_attrs {
557134a39   Andy Adamson   nfs41: sessions c...
180
181
182
183
184
185
  	u32			max_rqst_sz;
  	u32			max_resp_sz;
  	u32			max_resp_sz_cached;
  	u32			max_ops;
  	u32			max_reqs;
  };
76e697ba7   Trond Myklebust   NFSv4.1: Move slo...
186
  struct nfs4_slot;
9ff71c3a9   Benny Halevy   nfs41: client xdr...
187
  struct nfs4_sequence_args {
2b2fa7172   Trond Myklebust   NFSv4.1: Simplify...
188
  	struct nfs4_slot	*sa_slot;
8fe72bac8   Trond Myklebust   NFSv4: Clean up h...
189
190
  	u8			sa_cache_this : 1,
  				sa_privileged : 1;
9ff71c3a9   Benny Halevy   nfs41: client xdr...
191
192
193
  };
  
  struct nfs4_sequence_res {
dfb4f3098   Benny Halevy   NFSv4.1: keep seq...
194
  	struct nfs4_slot	*sr_slot;	/* slot used to send request */
8e63b6a8a   Trond Myklebust   NFSv4.1: Move the...
195
  	unsigned long		sr_timestamp;
fbcd4abcb   Andy Adamson   nfs41: setup_sequ...
196
  	int			sr_status;	/* sequence operation status */
0629e370d   Alexandros Batsakis   nfs41: check SEQU...
197
  	u32			sr_status_flags;
da0507b7c   Trond Myklebust   NFSv4.1: Reset th...
198
  	u32			sr_highest_slotid;
464ee9f96   Trond Myklebust   NFSv4.1: Ensure t...
199
  	u32			sr_target_highest_slotid;
9ff71c3a9   Benny Halevy   nfs41: client xdr...
200
  };
2050f0cc0   Andy Adamson   nfs41: get_lease_...
201
202
203
204
205
  struct nfs4_get_lease_time_args {
  	struct nfs4_sequence_args	la_seq_args;
  };
  
  struct nfs4_get_lease_time_res {
2050f0cc0   Andy Adamson   nfs41: get_lease_...
206
  	struct nfs4_sequence_res	lr_seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
207
  	struct nfs_fsinfo	       *lr_fsinfo;
2050f0cc0   Andy Adamson   nfs41: get_lease_...
208
  };
f8c3cf9d7   Trond Myklebust   NFSv4: Add a gene...
209
210
211
212
213
214
215
216
217
218
219
220
221
  struct xdr_stream;
  struct nfs4_xdr_opaque_data;
  
  struct nfs4_xdr_opaque_ops {
  	void (*encode)(struct xdr_stream *, const void *args,
  			const struct nfs4_xdr_opaque_data *);
  	void (*free)(struct nfs4_xdr_opaque_data *);
  };
  
  struct nfs4_xdr_opaque_data {
  	const struct nfs4_xdr_opaque_ops *ops;
  	void *data;
  };
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
222
223
224
  #define PNFS_LAYOUT_MAXSIZE 4096
  
  struct nfs4_layoutdriver_data {
35124a099   Weston Andros Adamson   Cleanup XDR parsi...
225
226
  	struct page **pages;
  	__u32 pglen;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
227
  	__u32 len;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
228
229
230
231
232
233
234
235
236
  };
  
  struct pnfs_layout_range {
  	u32 iomode;
  	u64 offset;
  	u64 length;
  };
  
  struct nfs4_layoutget_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
237
  	struct nfs4_sequence_args seq_args;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
238
239
240
241
242
243
  	__u32 type;
  	struct pnfs_layout_range range;
  	__u64 minlength;
  	__u32 maxcount;
  	struct inode *inode;
  	struct nfs_open_context *ctx;
cf7d63f1f   Fred Isaman   pnfs: serialize L...
244
  	nfs4_stateid stateid;
35124a099   Weston Andros Adamson   Cleanup XDR parsi...
245
  	struct nfs4_layoutdriver_data layout;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
246
247
248
  };
  
  struct nfs4_layoutget_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
249
  	struct nfs4_sequence_res seq_res;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
250
251
252
253
  	__u32 return_on_close;
  	struct pnfs_layout_range range;
  	__u32 type;
  	nfs4_stateid stateid;
35124a099   Weston Andros Adamson   Cleanup XDR parsi...
254
  	struct nfs4_layoutdriver_data *layoutp;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
255
256
257
258
259
  };
  
  struct nfs4_layoutget {
  	struct nfs4_layoutget_args args;
  	struct nfs4_layoutget_res res;
6ab59344d   Trond Myklebust   NFSv4.1: Ensure t...
260
  	struct rpc_cred *cred;
a75b9df9d   Trond Myklebust   NFSv4.1: Ensure t...
261
  	gfp_t gfp_flags;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
262
263
264
  };
  
  struct nfs4_getdeviceinfo_args {
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
265
  	struct nfs4_sequence_args seq_args;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
266
  	struct pnfs_device *pdev;
4e5908039   Trond Myklebust   NFSv4.1: Allow ge...
267
  	__u32 notify_types;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
268
269
270
  };
  
  struct nfs4_getdeviceinfo_res {
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
271
  	struct nfs4_sequence_res seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
272
  	struct pnfs_device *pdev;
4e5908039   Trond Myklebust   NFSv4.1: Allow ge...
273
  	__u32 notification;
b1f69b754   Andy Adamson   NFSv4.1: pnfs: ad...
274
  };
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
275
  struct nfs4_layoutcommit_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
276
  	struct nfs4_sequence_args seq_args;
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
277
278
279
280
  	nfs4_stateid stateid;
  	__u64 lastbytewritten;
  	struct inode *inode;
  	const u32 *bitmask;
5f919c9f1   Christoph Hellwig   pnfs: allow splic...
281
282
283
  	size_t layoutupdate_len;
  	struct page *layoutupdate_page;
  	struct page **layoutupdate_pages;
c89757061   Kinglong Mee   pnfs/blocklayout:...
284
  	__be32 *start_p;
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
285
286
287
  };
  
  struct nfs4_layoutcommit_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
288
  	struct nfs4_sequence_res seq_res;
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
289
290
  	struct nfs_fattr *fattr;
  	const struct nfs_server *server;
db29c0890   Andy Adamson   pnfs: cleanup_lay...
291
  	int status;
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
292
293
294
295
296
  };
  
  struct nfs4_layoutcommit_data {
  	struct rpc_task task;
  	struct nfs_fattr fattr;
a9bae5666   Peng Tao   pnfs: let layoutc...
297
  	struct list_head lseg_list;
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
298
  	struct rpc_cred *cred;
472e25944   Trond Myklebust   NFSv4.1: Pin the ...
299
  	struct inode *inode;
863a3c6c6   Andy Adamson   NFSv4.1: layoutco...
300
301
302
  	struct nfs4_layoutcommit_args args;
  	struct nfs4_layoutcommit_res res;
  };
cbe826036   Benny Halevy   pnfs: layoutreturn
303
  struct nfs4_layoutreturn_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
304
  	struct nfs4_sequence_args seq_args;
a56aaa02b   Trond Myklebust   NFSv4.1: Clean up...
305
  	struct pnfs_layout_hdr *layout;
cbe826036   Benny Halevy   pnfs: layoutreturn
306
  	struct inode *inode;
15eb67c15   Peng Tao   nfs41: add range ...
307
  	struct pnfs_layout_range range;
cbe826036   Benny Halevy   pnfs: layoutreturn
308
  	nfs4_stateid stateid;
a56aaa02b   Trond Myklebust   NFSv4.1: Clean up...
309
  	__u32   layout_type;
4d796d751   Trond Myklebust   pNFS: Allow layou...
310
  	struct nfs4_xdr_opaque_data *ld_private;
cbe826036   Benny Halevy   pnfs: layoutreturn
311
312
313
314
315
316
317
318
319
320
321
322
323
  };
  
  struct nfs4_layoutreturn_res {
  	struct nfs4_sequence_res seq_res;
  	u32 lrs_present;
  	nfs4_stateid stateid;
  };
  
  struct nfs4_layoutreturn {
  	struct nfs4_layoutreturn_args args;
  	struct nfs4_layoutreturn_res res;
  	struct rpc_cred *cred;
  	struct nfs_client *clp;
5a0ec8acb   Trond Myklebust   NFSv4.1: Pin the ...
324
  	struct inode *inode;
cbe826036   Benny Halevy   pnfs: layoutreturn
325
  	int rpc_status;
4d796d751   Trond Myklebust   pNFS: Allow layou...
326
  	struct nfs4_xdr_opaque_data ld_private;
cbe826036   Benny Halevy   pnfs: layoutreturn
327
  };
be3a5d233   Trond Myklebust   NFSv.2/pnfs Add a...
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
  #define PNFS_LAYOUTSTATS_MAXSIZE 256
  
  struct nfs42_layoutstat_args;
  struct nfs42_layoutstat_devinfo;
  typedef	void (*layoutstats_encode_t)(struct xdr_stream *,
  		struct nfs42_layoutstat_args *,
  		struct nfs42_layoutstat_devinfo *);
  
  /* Per file per deviceid layoutstats */
  struct nfs42_layoutstat_devinfo {
  	struct nfs4_deviceid dev_id;
  	__u64 offset;
  	__u64 length;
  	__u64 read_count;
  	__u64 read_bytes;
  	__u64 write_count;
  	__u64 write_bytes;
  	__u32 layout_type;
422c93c88   Trond Myklebust   pNFS/flexfiles: M...
346
  	struct nfs4_xdr_opaque_data ld_private;
be3a5d233   Trond Myklebust   NFSv.2/pnfs Add a...
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
  };
  
  struct nfs42_layoutstat_args {
  	struct nfs4_sequence_args seq_args;
  	struct nfs_fh *fh;
  	struct inode *inode;
  	nfs4_stateid stateid;
  	int num_dev;
  	struct nfs42_layoutstat_devinfo *devinfo;
  };
  
  struct nfs42_layoutstat_res {
  	struct nfs4_sequence_res seq_res;
  	int num_dev;
  	int rpc_status;
  };
  
  struct nfs42_layoutstat_data {
  	struct inode *inode;
  	struct nfs42_layoutstat_args args;
  	struct nfs42_layoutstat_res res;
  };
36022770d   Peng Tao   nfs42: add CLONE ...
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
  struct nfs42_clone_args {
  	struct nfs4_sequence_args	seq_args;
  	struct nfs_fh			*src_fh;
  	struct nfs_fh			*dst_fh;
  	nfs4_stateid			src_stateid;
  	nfs4_stateid			dst_stateid;
  	__u64				src_offset;
  	__u64				dst_offset;
  	__u64				count;
  	const u32			*dst_bitmask;
  };
  
  struct nfs42_clone_res {
  	struct nfs4_sequence_res	seq_res;
  	unsigned int			rpc_status;
  	struct nfs_fattr		*dst_fattr;
  	const struct nfs_server		*server;
  };
95b72eb0b   Trond Myklebust   NFSv4: Ensure we ...
387
388
389
390
  struct stateowner_id {
  	__u64	create_time;
  	__u32	uniquifier;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
391
392
393
394
  /*
   * Arguments to the open call.
   */
  struct nfs_openargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
395
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
396
  	const struct nfs_fh *	fh;
cee54fc94   Trond Myklebust   NFSv4: Add functi...
397
  	struct nfs_seqid *	seqid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
398
  	int			open_flags;
dc0b027df   Trond Myklebust   NFSv4: Convert th...
399
  	fmode_t			fmode;
6ae373394   Trond Myklebust   NFSv4.1: Ask for ...
400
  	u32			share_access;
6168f62cb   Weston Andros Adamson   NFSv4: Add ACCESS...
401
  	u32			access;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
402
  	__u64                   clientid;
95b72eb0b   Trond Myklebust   NFSv4: Ensure we ...
403
  	struct stateowner_id	id;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
404
  	union {
d77d76ffb   Trond Myklebust   NFSv41: Clean up ...
405
  		struct {
5334c5bda   Kinglong Mee   NFS: Send attribu...
406
  			struct iattr *  attrs;    /* UNCHECKED, GUARDED, EXCLUSIVE4_1 */
d77d76ffb   Trond Myklebust   NFSv41: Clean up ...
407
408
  			nfs4_verifier   verifier; /* EXCLUSIVE */
  		};
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
409
  		nfs4_stateid	delegation;		/* CLAIM_DELEGATE_CUR */
bd7bf9d54   Trond Myklebust   NFSv4: Convert de...
410
  		fmode_t		delegation_type;	/* CLAIM_PREVIOUS */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
411
412
413
414
  	} u;
  	const struct qstr *	name;
  	const struct nfs_server *server;	 /* Needed for ID mapping */
  	const u32 *		bitmask;
1549210fc   Trond Myklebust   NFSv4: Fix an Oop...
415
  	const u32 *		open_bitmap;
2a606188c   Trond Myklebust   NFSv4: Enable del...
416
  	enum open_claim_type4	claim;
549b19cc9   Trond Myklebust   NFSv4: Record the...
417
  	enum createmode4	createmode;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
418
  	const struct nfs4_label *label;
dff25ddb4   Andreas Gruenbacher   nfs: add support ...
419
  	umode_t			umask;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
420
421
422
  };
  
  struct nfs_openres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
423
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
424
425
426
427
428
  	nfs4_stateid            stateid;
  	struct nfs_fh           fh;
  	struct nfs4_change_info	cinfo;
  	__u32                   rflags;
  	struct nfs_fattr *      f_attr;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
429
  	struct nfs4_label	*f_label;
c1d519312   Trond Myklebust   NFSv4: Only incre...
430
  	struct nfs_seqid *	seqid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
431
  	const struct nfs_server *server;
bd7bf9d54   Trond Myklebust   NFSv4: Convert de...
432
  	fmode_t			delegation_type;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
433
  	nfs4_stateid		delegation;
7d160a6c4   Trond Myklebust   NFSv4: Express de...
434
  	unsigned long		pagemod_limit;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
435
  	__u32			do_recall;
aa53ed541   Jeff Layton   NFS4: on a O_EXCL...
436
  	__u32			attrset[NFS4_BITMAP_SIZE];
6926afd19   Trond Myklebust   NFSv4: Save the o...
437
438
  	struct nfs4_string	*owner;
  	struct nfs4_string	*group_owner;
ae2bb0323   Weston Andros Adamson   NFSv4: don't put ...
439
  	__u32			access_request;
6168f62cb   Weston Andros Adamson   NFSv4: Add ACCESS...
440
441
  	__u32			access_supported;
  	__u32			access_result;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
442
443
444
445
446
447
  };
  
  /*
   * Arguments to the open_confirm call.
   */
  struct nfs_open_confirmargs {
17ead6c85   Trond Myklebust   NFSv4: Fix memory...
448
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
449
  	const struct nfs_fh *	fh;
cdd4e68b5   Trond Myklebust   NFSv4: Make open_...
450
  	nfs4_stateid *		stateid;
cee54fc94   Trond Myklebust   NFSv4: Add functi...
451
  	struct nfs_seqid *	seqid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
452
453
454
  };
  
  struct nfs_open_confirmres {
17ead6c85   Trond Myklebust   NFSv4: Fix memory...
455
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
456
  	nfs4_stateid            stateid;
c1d519312   Trond Myklebust   NFSv4: Only incre...
457
  	struct nfs_seqid *	seqid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
458
459
460
461
462
463
  };
  
  /*
   * Arguments to the close call.
   */
  struct nfs_closeargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
464
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
465
  	struct nfs_fh *         fh;
566fcec60   Trond Myklebust   NFSv4: Fix an ato...
466
  	nfs4_stateid 		stateid;
cee54fc94   Trond Myklebust   NFSv4: Add functi...
467
  	struct nfs_seqid *	seqid;
dc0b027df   Trond Myklebust   NFSv4: Convert th...
468
  	fmode_t			fmode;
6ae373394   Trond Myklebust   NFSv4.1: Ask for ...
469
  	u32			share_access;
516a6af64   Trond Myklebust   NFS: Add optional...
470
  	const u32 *		bitmask;
cf8051657   Trond Myklebust   NFSv4: Add encode...
471
  	struct nfs4_layoutreturn_args *lr_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
472
473
474
  };
  
  struct nfs_closeres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
475
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
476
  	nfs4_stateid            stateid;
516a6af64   Trond Myklebust   NFS: Add optional...
477
  	struct nfs_fattr *	fattr;
c1d519312   Trond Myklebust   NFSv4: Only incre...
478
  	struct nfs_seqid *	seqid;
516a6af64   Trond Myklebust   NFS: Add optional...
479
  	const struct nfs_server *server;
cf8051657   Trond Myklebust   NFSv4: Add encode...
480
481
  	struct nfs4_layoutreturn_res *lr_res;
  	int lr_ret;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
482
483
484
485
486
  };
  /*
   *  * Arguments to the lock,lockt, and locku call.
   *   */
  struct nfs_lowner {
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
487
  	__u64			clientid;
9f958ab88   Trond Myklebust   NFSv4: Reduce the...
488
  	__u64			id;
d035c36c5   Trond Myklebust   NFSv4: Ensure con...
489
  	dev_t			s_dev;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
490
  };
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
491
  struct nfs_lock_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
492
  	struct nfs4_sequence_args	seq_args;
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
493
494
  	struct nfs_fh *		fh;
  	struct file_lock *	fl;
cee54fc94   Trond Myklebust   NFSv4: Add functi...
495
  	struct nfs_seqid *	lock_seqid;
425c1d4e5   Trond Myklebust   NFSv4: Fix lock o...
496
  	nfs4_stateid		lock_stateid;
06735b345   Trond Myklebust   NFSv4: Fix up han...
497
  	struct nfs_seqid *	open_seqid;
425c1d4e5   Trond Myklebust   NFSv4: Fix lock o...
498
  	nfs4_stateid		open_stateid;
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
499
500
501
  	struct nfs_lowner	lock_owner;
  	unsigned char		block : 1;
  	unsigned char		reclaim : 1;
c69899a17   Trond Myklebust   NFSv4: Update of ...
502
  	unsigned char		new_lock : 1;
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
503
504
505
506
  	unsigned char		new_lock_owner : 1;
  };
  
  struct nfs_lock_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
507
  	struct nfs4_sequence_res	seq_res;
c1d519312   Trond Myklebust   NFSv4: Only incre...
508
509
510
  	nfs4_stateid		stateid;
  	struct nfs_seqid *	lock_seqid;
  	struct nfs_seqid *	open_seqid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
511
  };
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
512
  struct nfs_locku_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
513
  	struct nfs4_sequence_args	seq_args;
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
514
515
  	struct nfs_fh *		fh;
  	struct file_lock *	fl;
cee54fc94   Trond Myklebust   NFSv4: Add functi...
516
  	struct nfs_seqid *	seqid;
425c1d4e5   Trond Myklebust   NFSv4: Fix lock o...
517
  	nfs4_stateid 		stateid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
518
  };
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
519
  struct nfs_locku_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
520
  	struct nfs4_sequence_res	seq_res;
c1d519312   Trond Myklebust   NFSv4: Only incre...
521
522
  	nfs4_stateid		stateid;
  	struct nfs_seqid *	seqid;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
523
  };
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
524
  struct nfs_lockt_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
525
  	struct nfs4_sequence_args	seq_args;
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
526
527
528
  	struct nfs_fh *		fh;
  	struct file_lock *	fl;
  	struct nfs_lowner	lock_owner;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
529
  };
911d1aaf2   Trond Myklebust   NFSv4: locking XD...
530
  struct nfs_lockt_res {
9ff71c3a9   Benny Halevy   nfs41: client xdr...
531
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
532
  	struct file_lock *	denied; /* LOCK, LOCKT failed */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
533
  };
d3c7b7ccc   Trond Myklebust   NFSv4: Add suppor...
534
  struct nfs_release_lockowner_args {
b7e63a107   Trond Myklebust   NFSv4: Fix anothe...
535
  	struct nfs4_sequence_args	seq_args;
d3c7b7ccc   Trond Myklebust   NFSv4: Add suppor...
536
537
  	struct nfs_lowner	lock_owner;
  };
b7e63a107   Trond Myklebust   NFSv4: Fix anothe...
538
539
540
  struct nfs_release_lockowner_res {
  	struct nfs4_sequence_res	seq_res;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
541
  struct nfs4_delegreturnargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
542
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
543
544
  	const struct nfs_fh *fhandle;
  	const nfs4_stateid *stateid;
fa178f29c   Trond Myklebust   NFSv4: Ensure DEL...
545
  	const u32 * bitmask;
586f1c39d   Trond Myklebust   NFSv4: Add encode...
546
  	struct nfs4_layoutreturn_args *lr_args;
fa178f29c   Trond Myklebust   NFSv4: Ensure DEL...
547
548
549
  };
  
  struct nfs4_delegreturnres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
550
  	struct nfs4_sequence_res	seq_res;
fa178f29c   Trond Myklebust   NFSv4: Ensure DEL...
551
  	struct nfs_fattr * fattr;
516285ebe   Trond Myklebust   NFSv4: nfs4_async...
552
  	struct nfs_server *server;
586f1c39d   Trond Myklebust   NFSv4: Add encode...
553
554
  	struct nfs4_layoutreturn_res *lr_res;
  	int lr_ret;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
555
556
557
  };
  
  /*
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
558
559
   * Arguments to the write call.
   */
2f2c63bc2   Trond Myklebust   NFS: Cleanup - on...
560
561
562
  struct nfs_write_verifier {
  	char			data[8];
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
563
  struct nfs_writeverf {
2f2c63bc2   Trond Myklebust   NFS: Cleanup - on...
564
  	struct nfs_write_verifier verifier;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
565
  	enum nfs3_stable_how	committed;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
566
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
567
  /*
3c6b899c4   Anna Schumaker   NFS: Create a com...
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
   * Arguments shared by the read and write call.
   */
  struct nfs_pgio_args {
  	struct nfs4_sequence_args	seq_args;
  	struct nfs_fh *		fh;
  	struct nfs_open_context *context;
  	struct nfs_lock_context *lock_context;
  	nfs4_stateid		stateid;
  	__u64			offset;
  	__u32			count;
  	unsigned int		pgbase;
  	struct page **		pages;
  	const u32 *		bitmask;	/* used by write */
  	enum nfs3_stable_how	stable;		/* used by write */
  };
9137bdf3d   Anna Schumaker   NFS: Create a com...
583
584
585
586
  struct nfs_pgio_res {
  	struct nfs4_sequence_res	seq_res;
  	struct nfs_fattr *	fattr;
  	__u32			count;
aabff4ddc   Peng Tao   nfs: save server ...
587
  	__u32			op_status;
9137bdf3d   Anna Schumaker   NFS: Create a com...
588
589
590
591
592
  	int			eof;		/* used by read */
  	struct nfs_writeverf *	verf;		/* used by write */
  	const struct nfs_server *server;	/* used by write */
  
  };
3c6b899c4   Anna Schumaker   NFS: Create a com...
593
  /*
0b7c01533   Fred Isaman   NFS: add a struct...
594
595
596
   * Arguments to the commit call.
   */
  struct nfs_commitargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
597
  	struct nfs4_sequence_args	seq_args;
0b7c01533   Fred Isaman   NFS: add a struct...
598
599
600
601
  	struct nfs_fh		*fh;
  	__u64			offset;
  	__u32			count;
  	const u32		*bitmask;
0b7c01533   Fred Isaman   NFS: add a struct...
602
603
604
  };
  
  struct nfs_commitres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
605
  	struct nfs4_sequence_res	seq_res;
aabff4ddc   Peng Tao   nfs: save server ...
606
  	__u32			op_status;
0b7c01533   Fred Isaman   NFS: add a struct...
607
608
609
  	struct nfs_fattr	*fattr;
  	struct nfs_writeverf	*verf;
  	const struct nfs_server *server;
0b7c01533   Fred Isaman   NFS: add a struct...
610
611
612
  };
  
  /*
4fdc17b2a   Trond Myklebust   NFS: Introduce st...
613
614
615
   * Common arguments to the unlink call
   */
  struct nfs_removeargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
616
  	struct nfs4_sequence_args	seq_args;
4fdc17b2a   Trond Myklebust   NFS: Introduce st...
617
618
  	const struct nfs_fh	*fh;
  	struct qstr		name;
4fdc17b2a   Trond Myklebust   NFS: Introduce st...
619
620
621
  };
  
  struct nfs_removeres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
622
  	struct nfs4_sequence_res 	seq_res;
516285ebe   Trond Myklebust   NFSv4: nfs4_async...
623
  	struct nfs_server *server;
d346890be   Trond Myklebust   NFS: Reduce stack...
624
  	struct nfs_fattr	*dir_attr;
4fdc17b2a   Trond Myklebust   NFS: Introduce st...
625
  	struct nfs4_change_info	cinfo;
4fdc17b2a   Trond Myklebust   NFS: Introduce st...
626
627
628
  };
  
  /*
920769f03   Jeff Layton   nfs: standardize ...
629
630
631
   * Common arguments to the rename call
   */
  struct nfs_renameargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
632
  	struct nfs4_sequence_args	seq_args;
920769f03   Jeff Layton   nfs: standardize ...
633
634
635
636
  	const struct nfs_fh		*old_dir;
  	const struct nfs_fh		*new_dir;
  	const struct qstr		*old_name;
  	const struct qstr		*new_name;
920769f03   Jeff Layton   nfs: standardize ...
637
  };
e8582a8b9   Jeff Layton   nfs: standardize ...
638
  struct nfs_renameres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
639
  	struct nfs4_sequence_res	seq_res;
516285ebe   Trond Myklebust   NFSv4: nfs4_async...
640
  	struct nfs_server		*server;
e8582a8b9   Jeff Layton   nfs: standardize ...
641
642
643
644
  	struct nfs4_change_info		old_cinfo;
  	struct nfs_fattr		*old_fattr;
  	struct nfs4_change_info		new_cinfo;
  	struct nfs_fattr		*new_fattr;
e8582a8b9   Jeff Layton   nfs: standardize ...
645
  };
a3f73c27a   Weston Andros Adamson   NFS: separate pas...
646
  /* parsed sec= options */
4d4b69dd8   Weston Andros Adamson   NFS: add support ...
647
  #define NFS_AUTH_INFO_MAX_FLAVORS 12 /* see fs/nfs/super.c */
a3f73c27a   Weston Andros Adamson   NFS: separate pas...
648
649
  struct nfs_auth_info {
  	unsigned int            flavor_len;
4d4b69dd8   Weston Andros Adamson   NFS: add support ...
650
  	rpc_authflavor_t        flavors[NFS_AUTH_INFO_MAX_FLAVORS];
a3f73c27a   Weston Andros Adamson   NFS: separate pas...
651
  };
920769f03   Jeff Layton   nfs: standardize ...
652
  /*
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
653
654
655
656
657
658
659
660
661
662
663
   * Argument struct for decode_entry function
   */
  struct nfs_entry {
  	__u64			ino;
  	__u64			cookie,
  				prev_cookie;
  	const char *		name;
  	unsigned int		len;
  	int			eof;
  	struct nfs_fh *		fh;
  	struct nfs_fattr *	fattr;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
664
  	struct nfs4_label  *label;
0b26a0bf6   Trond Myklebust   NFS: Ensure we re...
665
  	unsigned char		d_type;
573c4e1ef   Chuck Lever   NFS: Simplify ->d...
666
  	struct nfs_server *	server;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
  };
  
  /*
   * The following types are for NFSv2 only.
   */
  struct nfs_sattrargs {
  	struct nfs_fh *		fh;
  	struct iattr *		sattr;
  };
  
  struct nfs_diropargs {
  	struct nfs_fh *		fh;
  	const char *		name;
  	unsigned int		len;
  };
  
  struct nfs_createargs {
  	struct nfs_fh *		fh;
  	const char *		name;
  	unsigned int		len;
  	struct iattr *		sattr;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
689
  struct nfs_setattrargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
690
  	struct nfs4_sequence_args 	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
691
692
693
694
695
  	struct nfs_fh *                 fh;
  	nfs4_stateid                    stateid;
  	struct iattr *                  iap;
  	const struct nfs_server *	server; /* Needed for name mapping */
  	const u32 *			bitmask;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
696
  	const struct nfs4_label		*label;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
697
  };
23ec6965c   J. Bruce Fields   [PATCH] NFSv4: Cl...
698
  struct nfs_setaclargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
699
  	struct nfs4_sequence_args	seq_args;
23ec6965c   J. Bruce Fields   [PATCH] NFSv4: Cl...
700
701
  	struct nfs_fh *			fh;
  	size_t				acl_len;
23ec6965c   J. Bruce Fields   [PATCH] NFSv4: Cl...
702
703
  	struct page **			acl_pages;
  };
73c403a9a   Benny Halevy   nfs41: use nfs4_s...
704
705
706
  struct nfs_setaclres {
  	struct nfs4_sequence_res	seq_res;
  };
029d105e6   J. Bruce Fields   [PATCH] NFSv4: Cl...
707
  struct nfs_getaclargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
708
  	struct nfs4_sequence_args 	seq_args;
029d105e6   J. Bruce Fields   [PATCH] NFSv4: Cl...
709
710
  	struct nfs_fh *			fh;
  	size_t				acl_len;
029d105e6   J. Bruce Fields   [PATCH] NFSv4: Cl...
711
712
  	struct page **			acl_pages;
  };
bf118a342   Andy Adamson   NFSv4: include bi...
713
  /* getxattr ACL interface flags */
1f1ea6c2d   Trond Myklebust   NFSv4: Fix buffer...
714
  #define NFS4_ACL_TRUNC		0x0001	/* ACL was truncated */
663c79b3c   Benny Halevy   nfs41: use nfs4_g...
715
  struct nfs_getaclres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
716
  	struct nfs4_sequence_res	seq_res;
663c79b3c   Benny Halevy   nfs41: use nfs4_g...
717
  	size_t				acl_len;
bf118a342   Andy Adamson   NFSv4: include bi...
718
719
  	size_t				acl_data_offset;
  	int				acl_flags;
331818f1c   Trond Myklebust   NFSv4: Fix an Oop...
720
  	struct page *			acl_scratch;
663c79b3c   Benny Halevy   nfs41: use nfs4_g...
721
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
722
  struct nfs_setattrres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
723
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
724
  	struct nfs_fattr *              fattr;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
725
  	struct nfs4_label		*label;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
726
727
728
729
730
731
732
733
734
735
736
737
738
739
  	const struct nfs_server *	server;
  };
  
  struct nfs_linkargs {
  	struct nfs_fh *		fromfh;
  	struct nfs_fh *		tofh;
  	const char *		toname;
  	unsigned int		tolen;
  };
  
  struct nfs_symlinkargs {
  	struct nfs_fh *		fromfh;
  	const char *		fromname;
  	unsigned int		fromlen;
94a6d7532   Chuck Lever   NFS: Use cached p...
740
741
  	struct page **		pages;
  	unsigned int		pathlen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
742
743
744
745
746
747
748
749
750
  	struct iattr *		sattr;
  };
  
  struct nfs_readdirargs {
  	struct nfs_fh *		fh;
  	__u32			cookie;
  	unsigned int		count;
  	struct page **		pages;
  };
b7fa0554c   Andreas Gruenbacher   [PATCH] NFS: Add ...
751
752
753
754
755
756
757
758
759
760
761
  struct nfs3_getaclargs {
  	struct nfs_fh *		fh;
  	int			mask;
  	struct page **		pages;
  };
  
  struct nfs3_setaclargs {
  	struct inode *		inode;
  	int			mask;
  	struct posix_acl *	acl_access;
  	struct posix_acl *	acl_default;
ae46141ff   Trond Myklebust   NFSv3: Fix posix ...
762
763
  	size_t			len;
  	unsigned int		npages;
b7fa0554c   Andreas Gruenbacher   [PATCH] NFS: Add ...
764
765
  	struct page **		pages;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
  struct nfs_diropok {
  	struct nfs_fh *		fh;
  	struct nfs_fattr *	fattr;
  };
  
  struct nfs_readlinkargs {
  	struct nfs_fh *		fh;
  	unsigned int		pgbase;
  	unsigned int		pglen;
  	struct page **		pages;
  };
  
  struct nfs3_sattrargs {
  	struct nfs_fh *		fh;
  	struct iattr *		sattr;
  	unsigned int		guard;
  	struct timespec		guardtime;
  };
  
  struct nfs3_diropargs {
  	struct nfs_fh *		fh;
  	const char *		name;
  	unsigned int		len;
  };
  
  struct nfs3_accessargs {
  	struct nfs_fh *		fh;
  	__u32			access;
  };
  
  struct nfs3_createargs {
  	struct nfs_fh *		fh;
  	const char *		name;
  	unsigned int		len;
  	struct iattr *		sattr;
  	enum nfs3_createmode	createmode;
bc4785cd4   Al Viro   [PATCH] nfs: veri...
802
  	__be32			verifier[2];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
803
804
805
806
807
808
809
810
811
812
813
814
815
  };
  
  struct nfs3_mkdirargs {
  	struct nfs_fh *		fh;
  	const char *		name;
  	unsigned int		len;
  	struct iattr *		sattr;
  };
  
  struct nfs3_symlinkargs {
  	struct nfs_fh *		fromfh;
  	const char *		fromname;
  	unsigned int		fromlen;
94a6d7532   Chuck Lever   NFS: Use cached p...
816
817
  	struct page **		pages;
  	unsigned int		pathlen;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
818
819
820
821
822
823
824
825
826
827
828
  	struct iattr *		sattr;
  };
  
  struct nfs3_mknodargs {
  	struct nfs_fh *		fh;
  	const char *		name;
  	unsigned int		len;
  	enum nfs3_ftype		type;
  	struct iattr *		sattr;
  	dev_t			rdev;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
829
830
831
832
833
834
835
836
837
838
  struct nfs3_linkargs {
  	struct nfs_fh *		fromfh;
  	struct nfs_fh *		tofh;
  	const char *		toname;
  	unsigned int		tolen;
  };
  
  struct nfs3_readdirargs {
  	struct nfs_fh *		fh;
  	__u64			cookie;
bc4785cd4   Al Viro   [PATCH] nfs: veri...
839
  	__be32			verf[2];
a7a3b1e97   Benjamin Coddington   NFS: convert flag...
840
  	bool			plus;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
  	unsigned int            count;
  	struct page **		pages;
  };
  
  struct nfs3_diropres {
  	struct nfs_fattr *	dir_attr;
  	struct nfs_fh *		fh;
  	struct nfs_fattr *	fattr;
  };
  
  struct nfs3_accessres {
  	struct nfs_fattr *	fattr;
  	__u32			access;
  };
  
  struct nfs3_readlinkargs {
  	struct nfs_fh *		fh;
  	unsigned int		pgbase;
  	unsigned int		pglen;
  	struct page **		pages;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
862
863
864
865
866
867
868
  struct nfs3_linkres {
  	struct nfs_fattr *	dir_attr;
  	struct nfs_fattr *	fattr;
  };
  
  struct nfs3_readdirres {
  	struct nfs_fattr *	dir_attr;
bc4785cd4   Al Viro   [PATCH] nfs: veri...
869
  	__be32 *		verf;
a7a3b1e97   Benjamin Coddington   NFS: convert flag...
870
  	bool			plus;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
871
  };
b7fa0554c   Andreas Gruenbacher   [PATCH] NFS: Add ...
872
873
874
875
876
877
878
879
  struct nfs3_getaclres {
  	struct nfs_fattr *	fattr;
  	int			mask;
  	unsigned int		acl_access_count;
  	unsigned int		acl_default_count;
  	struct posix_acl *	acl_access;
  	struct posix_acl *	acl_default;
  };
89d77c8fa   Bryan Schumaker   NFS: Convert v4 i...
880
  #if IS_ENABLED(CONFIG_NFS_V4)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
881
882
883
884
  
  typedef u64 clientid4;
  
  struct nfs4_accessargs {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
885
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
886
  	const struct nfs_fh *		fh;
76b32999d   Trond Myklebust   NFSv4: Make NFSv4...
887
  	const u32 *			bitmask;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
888
889
890
891
  	u32				access;
  };
  
  struct nfs4_accessres {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
892
  	struct nfs4_sequence_res	seq_res;
76b32999d   Trond Myklebust   NFSv4: Make NFSv4...
893
894
  	const struct nfs_server *	server;
  	struct nfs_fattr *		fattr;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
895
896
897
898
899
  	u32				supported;
  	u32				access;
  };
  
  struct nfs4_create_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
900
  	struct nfs4_sequence_args 	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
901
902
  	u32				ftype;
  	union {
94a6d7532   Chuck Lever   NFS: Use cached p...
903
904
905
906
  		struct {
  			struct page **	pages;
  			unsigned int	len;
  		} symlink;   /* NF4LNK */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
907
908
909
910
911
912
913
914
915
916
  		struct {
  			u32		specdata1;
  			u32		specdata2;
  		} device;    /* NF4BLK, NF4CHR */
  	} u;
  	const struct qstr *		name;
  	const struct nfs_server *	server;
  	const struct iattr *		attrs;
  	const struct nfs_fh *		dir_fh;
  	const u32 *			bitmask;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
917
  	const struct nfs4_label		*label;
dff25ddb4   Andreas Gruenbacher   nfs: add support ...
918
  	umode_t				umask;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
919
920
921
  };
  
  struct nfs4_create_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
922
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
923
924
925
  	const struct nfs_server *	server;
  	struct nfs_fh *			fh;
  	struct nfs_fattr *		fattr;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
926
  	struct nfs4_label		*label;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
927
928
929
930
  	struct nfs4_change_info		dir_cinfo;
  };
  
  struct nfs4_fsinfo_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
931
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
932
933
934
  	const struct nfs_fh *		fh;
  	const u32 *			bitmask;
  };
3dda5e434   Benny Halevy   nfs41: use nfs4_f...
935
  struct nfs4_fsinfo_res {
3dda5e434   Benny Halevy   nfs41: use nfs4_f...
936
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
937
  	struct nfs_fsinfo	       *fsinfo;
3dda5e434   Benny Halevy   nfs41: use nfs4_f...
938
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
939
  struct nfs4_getattr_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
940
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
941
942
943
944
945
  	const struct nfs_fh *		fh;
  	const u32 *			bitmask;
  };
  
  struct nfs4_getattr_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
946
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
947
948
  	const struct nfs_server *	server;
  	struct nfs_fattr *		fattr;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
949
  	struct nfs4_label		*label;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
950
951
952
  };
  
  struct nfs4_link_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
953
  	struct nfs4_sequence_args 	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
954
955
956
  	const struct nfs_fh *		fh;
  	const struct nfs_fh *		dir_fh;
  	const struct qstr *		name;
91ba2eeec   Trond Myklebust   NFSv4: Add post-o...
957
958
959
960
  	const u32 *			bitmask;
  };
  
  struct nfs4_link_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
961
  	struct nfs4_sequence_res	seq_res;
91ba2eeec   Trond Myklebust   NFSv4: Add post-o...
962
963
  	const struct nfs_server *	server;
  	struct nfs_fattr *		fattr;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
964
  	struct nfs4_label		*label;
91ba2eeec   Trond Myklebust   NFSv4: Add post-o...
965
966
  	struct nfs4_change_info		cinfo;
  	struct nfs_fattr *		dir_attr;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
967
968
969
  };
  
  struct nfs4_lookup_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
970
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
971
972
973
974
975
976
  	const struct nfs_fh *		dir_fh;
  	const struct qstr *		name;
  	const u32 *			bitmask;
  };
  
  struct nfs4_lookup_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
977
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
978
979
980
  	const struct nfs_server *	server;
  	struct nfs_fattr *		fattr;
  	struct nfs_fh *			fh;
e058f70b8   Steve Dickson   NFSv4: Introduce ...
981
  	struct nfs4_label		*label;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
982
  };
5b5faaf6d   Jeff Layton   nfs4: add NFSv4 L...
983
984
985
986
987
988
989
990
991
992
993
994
995
  struct nfs4_lookupp_arg {
  	struct nfs4_sequence_args	seq_args;
  	const struct nfs_fh		*fh;
  	const u32			*bitmask;
  };
  
  struct nfs4_lookupp_res {
  	struct nfs4_sequence_res	seq_res;
  	const struct nfs_server		*server;
  	struct nfs_fattr		*fattr;
  	struct nfs_fh			*fh;
  	struct nfs4_label		*label;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
996
  struct nfs4_lookup_root_arg {
9ff71c3a9   Benny Halevy   nfs41: client xdr...
997
  	struct nfs4_sequence_args	seq_args;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
998
  	const u32 *			bitmask;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
999
1000
1001
  };
  
  struct nfs4_pathconf_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1002
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1003
1004
1005
  	const struct nfs_fh *		fh;
  	const u32 *			bitmask;
  };
d45b2989a   Benny Halevy   nfs41: use nfs4_p...
1006
  struct nfs4_pathconf_res {
d45b2989a   Benny Halevy   nfs41: use nfs4_p...
1007
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1008
  	struct nfs_pathconf	       *pathconf;
d45b2989a   Benny Halevy   nfs41: use nfs4_p...
1009
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1010
  struct nfs4_readdir_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1011
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1012
1013
1014
1015
1016
1017
1018
  	const struct nfs_fh *		fh;
  	u64				cookie;
  	nfs4_verifier			verifier;
  	u32				count;
  	struct page **			pages;	/* zero-copy data */
  	unsigned int			pgbase;	/* zero-copy data */
  	const u32 *			bitmask;
a7a3b1e97   Benjamin Coddington   NFS: convert flag...
1019
  	bool				plus;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1020
1021
1022
  };
  
  struct nfs4_readdir_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1023
  	struct nfs4_sequence_res	seq_res;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1024
1025
1026
1027
1028
  	nfs4_verifier			verifier;
  	unsigned int			pgbase;
  };
  
  struct nfs4_readlink {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1029
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1030
1031
1032
1033
1034
  	const struct nfs_fh *		fh;
  	unsigned int			pgbase;
  	unsigned int			pglen;   /* zero-copy data */
  	struct page **			pages;   /* zero-copy data */
  };
f50c70008   Benny Halevy   nfs41: use nfs4_r...
1035
1036
1037
  struct nfs4_readlink_res {
  	struct nfs4_sequence_res	seq_res;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1038
  struct nfs4_setclientid {
cc38bac3a   Chuck Lever   NFS: Ensure NFSv4...
1039
  	const nfs4_verifier *		sc_verifier;
cc38bac3a   Chuck Lever   NFS: Ensure NFSv4...
1040
  	u32				sc_prog;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1041
  	unsigned int			sc_netid_len;
d1ce02e16   Chuck Lever   NFS: SETCLIENTID ...
1042
  	char				sc_netid[RPCBIND_MAXNETIDLEN + 1];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1043
  	unsigned int			sc_uaddr_len;
d1ce02e16   Chuck Lever   NFS: SETCLIENTID ...
1044
  	char				sc_uaddr[RPCBIND_MAXUADDRLEN + 1];
3a6bb7387   Jeff Layton   nfs: convert setc...
1045
  	struct nfs_client		*sc_clnt;
f11b2a1cf   Jeff Layton   nfs4: copy accept...
1046
  	struct rpc_cred			*sc_cred;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1047
  };
bb8b27e50   Trond Myklebust   NFSv4: Clean up t...
1048
1049
1050
1051
  struct nfs4_setclientid_res {
  	u64				clientid;
  	nfs4_verifier			confirm;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1052
  struct nfs4_statfs_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1053
  	struct nfs4_sequence_args	seq_args;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1054
1055
1056
  	const struct nfs_fh *		fh;
  	const u32 *			bitmask;
  };
24ad148a0   Benny Halevy   nfs41: use nfs4_s...
1057
  struct nfs4_statfs_res {
24ad148a0   Benny Halevy   nfs41: use nfs4_s...
1058
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1059
  	struct nfs_fsstat	       *fsstat;
24ad148a0   Benny Halevy   nfs41: use nfs4_s...
1060
  };
43652ad55   Benny Halevy   nfs41: use nfs4_s...
1061
  struct nfs4_server_caps_arg {
43652ad55   Benny Halevy   nfs41: use nfs4_s...
1062
  	struct nfs4_sequence_args	seq_args;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1063
  	struct nfs_fh		       *fhandle;
8c61282ff   Kinglong Mee   NFS: Get suppattr...
1064
  	const u32 *			bitmask;
43652ad55   Benny Halevy   nfs41: use nfs4_s...
1065
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1066
  struct nfs4_server_caps_res {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1067
  	struct nfs4_sequence_res	seq_res;
dae100c2b   Fred Isaman   pnfs: ask for lay...
1068
  	u32				attr_bitmask[3];
8c61282ff   Kinglong Mee   NFS: Get suppattr...
1069
  	u32				exclcreat_bitmask[3];
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1070
1071
1072
  	u32				acl_bitmask;
  	u32				has_links;
  	u32				has_symlinks;
264e6351c   Chuck Lever   NFS: Request fh_e...
1073
  	u32				fh_expire_type;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1074
  };
7aaa0b3bd   Manoj Naik   NFSv4: convert fs...
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
  #define NFS4_PATHNAME_MAXCOMPONENTS 512
  struct nfs4_pathname {
  	unsigned int ncomponents;
  	struct nfs4_string components[NFS4_PATHNAME_MAXCOMPONENTS];
  };
  
  #define NFS4_FS_LOCATION_MAXSERVERS 10
  struct nfs4_fs_location {
  	unsigned int nservers;
  	struct nfs4_string servers[NFS4_FS_LOCATION_MAXSERVERS];
  	struct nfs4_pathname rootpath;
  };
  
  #define NFS4_FS_LOCATIONS_MAXENTRIES 10
  struct nfs4_fs_locations {
683b57b43   Trond Myklebust   NFSv4: Implement ...
1090
1091
  	struct nfs_fattr fattr;
  	const struct nfs_server *server;
7aaa0b3bd   Manoj Naik   NFSv4: convert fs...
1092
  	struct nfs4_pathname fs_path;
683b57b43   Trond Myklebust   NFSv4: Implement ...
1093
  	int nlocations;
7aaa0b3bd   Manoj Naik   NFSv4: convert fs...
1094
  	struct nfs4_fs_location locations[NFS4_FS_LOCATIONS_MAXENTRIES];
683b57b43   Trond Myklebust   NFSv4: Implement ...
1095
1096
1097
  };
  
  struct nfs4_fs_locations_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1098
  	struct nfs4_sequence_args	seq_args;
683b57b43   Trond Myklebust   NFSv4: Implement ...
1099
  	const struct nfs_fh *dir_fh;
b03d735b4   Chuck Lever   NFS: Add method t...
1100
  	const struct nfs_fh *fh;
683b57b43   Trond Myklebust   NFSv4: Implement ...
1101
1102
1103
  	const struct qstr *name;
  	struct page *page;
  	const u32 *bitmask;
b03d735b4   Chuck Lever   NFS: Add method t...
1104
1105
  	clientid4 clientid;
  	unsigned char migration:1, renew:1;
683b57b43   Trond Myklebust   NFSv4: Implement ...
1106
  };
22958463d   Benny Halevy   nfs41: use nfs4_f...
1107
  struct nfs4_fs_locations_res {
22958463d   Benny Halevy   nfs41: use nfs4_f...
1108
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1109
  	struct nfs4_fs_locations       *fs_locations;
b03d735b4   Chuck Lever   NFS: Add method t...
1110
  	unsigned char			migration:1, renew:1;
22958463d   Benny Halevy   nfs41: use nfs4_f...
1111
  };
fb15b26f8   Chuck Lever   SUNRPC: Define rp...
1112
1113
1114
  struct nfs4_secinfo4 {
  	u32			flavor;
  	struct rpcsec_gss_info	flavor_info;
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
1115
1116
1117
  };
  
  struct nfs4_secinfo_flavors {
fb15b26f8   Chuck Lever   SUNRPC: Define rp...
1118
1119
  	unsigned int		num_flavors;
  	struct nfs4_secinfo4	flavors[0];
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
1120
1121
1122
  };
  
  struct nfs4_secinfo_arg {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1123
  	struct nfs4_sequence_args	seq_args;
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
1124
1125
  	const struct nfs_fh		*dir_fh;
  	const struct qstr		*name;
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
1126
1127
1128
  };
  
  struct nfs4_secinfo_res {
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
1129
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1130
  	struct nfs4_secinfo_flavors	*flavors;
5a5ea0d48   Bryan Schumaker   NFS: Add secinfo ...
1131
  };
44c999338   Chuck Lever   NFS: Add method t...
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
  struct nfs4_fsid_present_arg {
  	struct nfs4_sequence_args	seq_args;
  	const struct nfs_fh		*fh;
  	clientid4			clientid;
  	unsigned char			renew:1;
  };
  
  struct nfs4_fsid_present_res {
  	struct nfs4_sequence_res	seq_res;
  	struct nfs_fh			*fh;
  	unsigned char			renew:1;
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1144
  #endif /* CONFIG_NFS_V4 */
99fe60d06   Benny Halevy   nfs41: exchange_i...
1145
1146
1147
1148
1149
1150
  struct nfstime4 {
  	u64	seconds;
  	u32	nseconds;
  };
  
  #ifdef CONFIG_NFS_V4_1
ea2cf2282   Fred Isaman   NFS: create struc...
1151
1152
1153
1154
1155
1156
  
  struct pnfs_commit_bucket {
  	struct list_head written;
  	struct list_head committing;
  	struct pnfs_layout_segment *wlseg;
  	struct pnfs_layout_segment *clseg;
5002c5863   Weston Andros Adamson   pnfs: support mul...
1157
  	struct nfs_writeverf direct_verf;
ea2cf2282   Fred Isaman   NFS: create struc...
1158
1159
1160
1161
1162
1163
1164
1165
  };
  
  struct pnfs_ds_commit_info {
  	int nwritten;
  	int ncommitting;
  	int nbuckets;
  	struct pnfs_commit_bucket *buckets;
  };
2031cd1af   Weston Andros Adamson   nfs4.1: Minimal S...
1166
1167
1168
1169
1170
  struct nfs41_state_protection {
  	u32 how;
  	struct nfs4_op_map enforce;
  	struct nfs4_op_map allow;
  };
99fe60d06   Benny Halevy   nfs41: exchange_i...
1171
1172
  struct nfs41_exchange_id_args {
  	struct nfs_client		*client;
fd40559c8   Trond Myklebust   NFSv4: Fix EXCHAN...
1173
  	nfs4_verifier			verifier;
99fe60d06   Benny Halevy   nfs41: exchange_i...
1174
  	u32				flags;
2031cd1af   Weston Andros Adamson   nfs4.1: Minimal S...
1175
  	struct nfs41_state_protection	state_protect;
99fe60d06   Benny Halevy   nfs41: exchange_i...
1176
  };
acdeb69d9   Chuck Lever   NFS: EXCHANGE_ID ...
1177
  struct nfs41_server_owner {
99fe60d06   Benny Halevy   nfs41: exchange_i...
1178
1179
1180
1181
  	uint64_t			minor_id;
  	uint32_t			major_id_sz;
  	char				major_id[NFS4_OPAQUE_LIMIT];
  };
79d4e1f0d   Chuck Lever   NFS: Use proper n...
1182
  struct nfs41_server_scope {
99fe60d06   Benny Halevy   nfs41: exchange_i...
1183
1184
1185
  	uint32_t			server_scope_sz;
  	char 				server_scope[NFS4_OPAQUE_LIMIT];
  };
7d2ed9ac2   Weston Andros Adamson   NFSv4: parse and ...
1186
1187
1188
1189
1190
  struct nfs41_impl_id {
  	char				domain[NFS4_OPAQUE_LIMIT + 1];
  	char				name[NFS4_OPAQUE_LIMIT + 1];
  	struct nfstime4			date;
  };
71a097c6d   Trond Myklebust   NFSv4.1: Clean up...
1191
1192
1193
1194
1195
1196
  struct nfs41_bind_conn_to_session_args {
  	struct nfs_client		*client;
  	struct nfs4_sessionid		sessionid;
  	u32				dir;
  	bool				use_conn_in_rdma_mode;
  };
7c44f1ae4   Weston Andros Adamson   nfs4.1: add BIND_...
1197
  struct nfs41_bind_conn_to_session_res {
71a097c6d   Trond Myklebust   NFSv4.1: Clean up...
1198
  	struct nfs4_sessionid		sessionid;
7c44f1ae4   Weston Andros Adamson   nfs4.1: add BIND_...
1199
1200
1201
  	u32				dir;
  	bool				use_conn_in_rdma_mode;
  };
99fe60d06   Benny Halevy   nfs41: exchange_i...
1202
  struct nfs41_exchange_id_res {
32b013106   Trond Myklebust   NFSv4.1: Don't cl...
1203
1204
  	u64				clientid;
  	u32				seqid;
99fe60d06   Benny Halevy   nfs41: exchange_i...
1205
  	u32				flags;
acdeb69d9   Chuck Lever   NFS: EXCHANGE_ID ...
1206
  	struct nfs41_server_owner	*server_owner;
79d4e1f0d   Chuck Lever   NFS: Use proper n...
1207
  	struct nfs41_server_scope	*server_scope;
7d2ed9ac2   Weston Andros Adamson   NFSv4: parse and ...
1208
  	struct nfs41_impl_id		*impl_id;
2031cd1af   Weston Andros Adamson   nfs4.1: Minimal S...
1209
  	struct nfs41_state_protection	state_protect;
99fe60d06   Benny Halevy   nfs41: exchange_i...
1210
  };
fc931582c   Andy Adamson   nfs41: create_ses...
1211
1212
1213
  
  struct nfs41_create_session_args {
  	struct nfs_client	       *client;
79969dd12   Trond Myklebust   NFSv4.1: Clean up...
1214
1215
  	u64				clientid;
  	uint32_t			seqid;
fc931582c   Andy Adamson   nfs41: create_ses...
1216
1217
1218
1219
1220
1221
1222
  	uint32_t			flags;
  	uint32_t			cb_program;
  	struct nfs4_channel_attrs	fc_attrs;	/* Fore Channel */
  	struct nfs4_channel_attrs	bc_attrs;	/* Back Channel */
  };
  
  struct nfs41_create_session_res {
79969dd12   Trond Myklebust   NFSv4.1: Clean up...
1223
1224
1225
1226
1227
  	struct nfs4_sessionid		sessionid;
  	uint32_t			seqid;
  	uint32_t			flags;
  	struct nfs4_channel_attrs	fc_attrs;	/* Fore Channel */
  	struct nfs4_channel_attrs	bc_attrs;	/* Back Channel */
fc931582c   Andy Adamson   nfs41: create_ses...
1228
  };
180197536   Ricardo Labiaga   nfs41: RECLAIM_CO...
1229
1230
  
  struct nfs41_reclaim_complete_args {
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1231
  	struct nfs4_sequence_args	seq_args;
180197536   Ricardo Labiaga   nfs41: RECLAIM_CO...
1232
1233
  	/* In the future extend to include curr_fh for use with migration */
  	unsigned char			one_fs:1;
180197536   Ricardo Labiaga   nfs41: RECLAIM_CO...
1234
1235
1236
1237
1238
  };
  
  struct nfs41_reclaim_complete_res {
  	struct nfs4_sequence_res	seq_res;
  };
fca78d6d2   Bryan Schumaker   NFS: Add SECINFO_...
1239
1240
1241
1242
  
  #define SECINFO_STYLE_CURRENT_FH 0
  #define SECINFO_STYLE_PARENT 1
  struct nfs41_secinfo_no_name_args {
fca78d6d2   Bryan Schumaker   NFS: Add SECINFO_...
1243
  	struct nfs4_sequence_args	seq_args;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1244
  	int				style;
fca78d6d2   Bryan Schumaker   NFS: Add SECINFO_...
1245
  };
7d9747947   Bryan Schumaker   NFS: Added TEST_S...
1246
  struct nfs41_test_stateid_args {
7d9747947   Bryan Schumaker   NFS: Added TEST_S...
1247
  	struct nfs4_sequence_args	seq_args;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1248
  	nfs4_stateid			*stateid;
7d9747947   Bryan Schumaker   NFS: Added TEST_S...
1249
1250
1251
  };
  
  struct nfs41_test_stateid_res {
7d9747947   Bryan Schumaker   NFS: Added TEST_S...
1252
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1253
  	unsigned int			status;
7d9747947   Bryan Schumaker   NFS: Added TEST_S...
1254
  };
9aeda35fd   Bryan Schumaker   NFS: added FREE_S...
1255
  struct nfs41_free_stateid_args {
9aeda35fd   Bryan Schumaker   NFS: added FREE_S...
1256
  	struct nfs4_sequence_args	seq_args;
7c1d5fae4   Trond Myklebust   NFSv4: Convert nf...
1257
  	nfs4_stateid			stateid;
9aeda35fd   Bryan Schumaker   NFS: added FREE_S...
1258
1259
1260
  };
  
  struct nfs41_free_stateid_res {
9aeda35fd   Bryan Schumaker   NFS: added FREE_S...
1261
  	struct nfs4_sequence_res	seq_res;
62ae082d8   Trond Myklebust   NFSv4: Reorder th...
1262
  	unsigned int			status;
9aeda35fd   Bryan Schumaker   NFS: added FREE_S...
1263
  };
8c393f9a7   Peng Tao   nfs: fix pnfs dir...
1264
1265
1266
1267
1268
  static inline void
  nfs_free_pnfs_ds_cinfo(struct pnfs_ds_commit_info *cinfo)
  {
  	kfree(cinfo->buckets);
  }
4f97615d1   Trond Myklebust   NFS: Fix a compil...
1269
1270
1271
1272
  #else
  
  struct pnfs_ds_commit_info {
  };
8c393f9a7   Peng Tao   nfs: fix pnfs dir...
1273
1274
1275
1276
  static inline void
  nfs_free_pnfs_ds_cinfo(struct pnfs_ds_commit_info *cinfo)
  {
  }
99fe60d06   Benny Halevy   nfs41: exchange_i...
1277
  #endif /* CONFIG_NFS_V4_1 */
1c6dcbe5c   Anna Schumaker   NFS: Implement SEEK
1278
  #ifdef CONFIG_NFS_V4_2
f4ac1674f   Anna Schumaker   nfs: Add ALLOCATE...
1279
1280
1281
1282
1283
1284
1285
  struct nfs42_falloc_args {
  	struct nfs4_sequence_args	seq_args;
  
  	struct nfs_fh			*falloc_fh;
  	nfs4_stateid			 falloc_stateid;
  	u64				 falloc_offset;
  	u64				 falloc_length;
9a51940bf   Anna Schumaker   NFS: Don't zap ca...
1286
  	const u32			*falloc_bitmask;
f4ac1674f   Anna Schumaker   nfs: Add ALLOCATE...
1287
1288
1289
1290
1291
  };
  
  struct nfs42_falloc_res {
  	struct nfs4_sequence_res	seq_res;
  	unsigned int			status;
9a51940bf   Anna Schumaker   NFS: Don't zap ca...
1292
1293
1294
  
  	struct nfs_fattr		*falloc_fattr;
  	const struct nfs_server		*falloc_server;
f4ac1674f   Anna Schumaker   nfs: Add ALLOCATE...
1295
  };
2e72448b0   Anna Schumaker   NFS: Add COPY nfs...
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
  struct nfs42_copy_args {
  	struct nfs4_sequence_args	seq_args;
  
  	struct nfs_fh			*src_fh;
  	nfs4_stateid			src_stateid;
  	u64				src_pos;
  
  	struct nfs_fh			*dst_fh;
  	nfs4_stateid			dst_stateid;
  	u64				dst_pos;
  
  	u64				count;
  };
  
  struct nfs42_write_res {
  	u64			count;
  	struct nfs_writeverf	verifier;
  };
  
  struct nfs42_copy_res {
  	struct nfs4_sequence_res	seq_res;
  	struct nfs42_write_res		write_res;
  	bool				consecutive;
  	bool				synchronous;
e09269344   Olga Kornievskaia   NFS append COMMIT...
1320
  	struct nfs_commitres		commit_res;
2e72448b0   Anna Schumaker   NFS: Add COPY nfs...
1321
  };
1c6dcbe5c   Anna Schumaker   NFS: Implement SEEK
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
  struct nfs42_seek_args {
  	struct nfs4_sequence_args	seq_args;
  
  	struct nfs_fh			*sa_fh;
  	nfs4_stateid			sa_stateid;
  	u64				sa_offset;
  	u32				sa_what;
  };
  
  struct nfs42_seek_res {
  	struct nfs4_sequence_res	seq_res;
  	unsigned int			status;
  
  	u32	sr_eof;
  	u64	sr_offset;
  };
  #endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1339
  struct nfs_page;
40859d7ee   Chuck Lever   NFS: support larg...
1340
  #define NFS_PAGEVEC_SIZE	(8U)
30dd374f6   Fred Isaman   NFS: create struc...
1341
1342
1343
1344
1345
  struct nfs_page_array {
  	struct page		**pagevec;
  	unsigned int		npages;		/* Max length of pagevec */
  	struct page		*page_array[NFS_PAGEVEC_SIZE];
  };
4db6e0b74   Fred Isaman   NFS: merge _full ...
1346
1347
1348
1349
1350
  /* used as flag bits in nfs_pgio_header */
  enum {
  	NFS_IOHDR_ERROR = 0,
  	NFS_IOHDR_EOF,
  	NFS_IOHDR_REDO,
37e9ed22b   Trond Myklebust   pNFS: Add flag to...
1351
  	NFS_IOHDR_STAT,
4db6e0b74   Fred Isaman   NFS: merge _full ...
1352
  };
919e3bd9a   Trond Myklebust   NFS: Ensure we co...
1353
  struct nfs_io_completion;
cd841605f   Fred Isaman   NFS: create commo...
1354
1355
1356
1357
1358
  struct nfs_pgio_header {
  	struct inode		*inode;
  	struct rpc_cred		*cred;
  	struct list_head	pages;
  	struct nfs_page		*req;
f79d06f54   Anna Schumaker   NFS: Move the wri...
1359
  	struct nfs_writeverf	verf;		/* Used for writes */
fbe77c30e   Benjamin Coddington   NFS: move rw_mode...
1360
  	fmode_t			rw_mode;
cd841605f   Fred Isaman   NFS: create commo...
1361
  	struct pnfs_layout_segment *lseg;
4db6e0b74   Fred Isaman   NFS: merge _full ...
1362
  	loff_t			io_start;
cd841605f   Fred Isaman   NFS: create commo...
1363
  	const struct rpc_call_ops *mds_ops;
4db6e0b74   Fred Isaman   NFS: merge _full ...
1364
  	void (*release) (struct nfs_pgio_header *hdr);
061ae2edb   Fred Isaman   NFS: create compl...
1365
  	const struct nfs_pgio_completion_ops *completion_ops;
4a0de55c5   Anna Schumaker   NFS: Create a com...
1366
  	const struct nfs_rw_ops	*rw_ops;
919e3bd9a   Trond Myklebust   NFS: Ensure we co...
1367
  	struct nfs_io_completion *io_completion;
584aa810b   Fred Isaman   NFS: rewrite dire...
1368
  	struct nfs_direct_req	*dreq;
4db6e0b74   Fred Isaman   NFS: merge _full ...
1369
1370
  	spinlock_t		lock;
  	/* fields protected by lock */
cd841605f   Fred Isaman   NFS: create commo...
1371
  	int			pnfs_error;
4db6e0b74   Fred Isaman   NFS: merge _full ...
1372
1373
1374
  	int			error;		/* merge with pnfs_error */
  	unsigned long		good_bytes;	/* boundary of good data */
  	unsigned long		flags;
d45f60c67   Weston Andros Adamson   nfs: merge nfs_pg...
1375
1376
1377
1378
1379
1380
  
  	/*
  	 * rpc data
  	 */
  	struct rpc_task		task;
  	struct nfs_fattr	fattr;
d45f60c67   Weston Andros Adamson   nfs: merge nfs_pg...
1381
1382
1383
1384
1385
1386
1387
  	struct nfs_pgio_args	args;		/* argument struct */
  	struct nfs_pgio_res	res;		/* result struct */
  	unsigned long		timestamp;	/* For lease renewal */
  	int (*pgio_done_cb)(struct rpc_task *, struct nfs_pgio_header *);
  	__u64			mds_offset;	/* Filelayout dense stripe */
  	struct nfs_page_array	page_array;
  	struct nfs_client	*ds_clp;	/* pNFS data server */
6cccbb6f5   Weston Andros Adamson   nfs: rename pgio ...
1388
  	int			ds_commit_idx;	/* ds index if ds_clp is set */
a7d42ddb3   Weston Andros Adamson   nfs: add mirrorin...
1389
  	int			pgio_mirror_idx;/* mirror index in pgio layer */
cd841605f   Fred Isaman   NFS: create commo...
1390
  };
ea2cf2282   Fred Isaman   NFS: create struc...
1391
1392
  struct nfs_mds_commit_info {
  	atomic_t rpcs_out;
5cb953d4b   Trond Myklebust   NFS: Use an atomi...
1393
  	atomic_long_t		ncommit;
ea2cf2282   Fred Isaman   NFS: create struc...
1394
1395
  	struct list_head	list;
  };
b20135d0b   Trond Myklebust   NFSv4.1/pNFS: Don...
1396
  struct nfs_commit_info;
f453a54a0   Fred Isaman   NFS: create nfs_c...
1397
1398
1399
  struct nfs_commit_data;
  struct nfs_inode;
  struct nfs_commit_completion_ops {
f453a54a0   Fred Isaman   NFS: create nfs_c...
1400
  	void (*completion) (struct nfs_commit_data *data);
b20135d0b   Trond Myklebust   NFSv4.1/pNFS: Don...
1401
  	void (*resched_write) (struct nfs_commit_info *, struct nfs_page *);
f453a54a0   Fred Isaman   NFS: create nfs_c...
1402
  };
ea2cf2282   Fred Isaman   NFS: create struc...
1403
  struct nfs_commit_info {
fe238e601   Dave Wysochanski   NFS: Save struct ...
1404
  	struct inode 			*inode;	/* Needed for inode->i_lock */
ea2cf2282   Fred Isaman   NFS: create struc...
1405
1406
  	struct nfs_mds_commit_info	*mds;
  	struct pnfs_ds_commit_info	*ds;
b359f9d09   Fred Isaman   NFS: add dreq to ...
1407
  	struct nfs_direct_req		*dreq;	/* O_DIRECT request */
f453a54a0   Fred Isaman   NFS: create nfs_c...
1408
  	const struct nfs_commit_completion_ops *completion_ops;
ea2cf2282   Fred Isaman   NFS: create struc...
1409
  };
0b7c01533   Fred Isaman   NFS: add a struct...
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
  struct nfs_commit_data {
  	struct rpc_task		task;
  	struct inode		*inode;
  	struct rpc_cred		*cred;
  	struct nfs_fattr	fattr;
  	struct nfs_writeverf	verf;
  	struct list_head	pages;		/* Coalesced requests we wish to flush */
  	struct list_head	list;		/* lists of struct nfs_write_data */
  	struct nfs_direct_req	*dreq;		/* O_DIRECT request */
  	struct nfs_commitargs	args;		/* argument struct */
  	struct nfs_commitres	res;		/* result struct */
  	struct nfs_open_context *context;
  	struct pnfs_layout_segment *lseg;
  	struct nfs_client	*ds_clp;	/* pNFS data server */
  	int			ds_commit_index;
378520b83   Peng Tao   nfs41: add a help...
1425
  	loff_t			lwb;
0b7c01533   Fred Isaman   NFS: add a struct...
1426
  	const struct rpc_call_ops *mds_ops;
f453a54a0   Fred Isaman   NFS: create nfs_c...
1427
  	const struct nfs_commit_completion_ops *completion_ops;
0b7c01533   Fred Isaman   NFS: add a struct...
1428
  	int (*commit_done_cb) (struct rpc_task *task, struct nfs_commit_data *data);
37e9ed22b   Trond Myklebust   pNFS: Add flag to...
1429
  	unsigned long		flags;
0b7c01533   Fred Isaman   NFS: add a struct...
1430
  };
061ae2edb   Fred Isaman   NFS: create compl...
1431
1432
  struct nfs_pgio_completion_ops {
  	void	(*error_cleanup)(struct list_head *head);
584aa810b   Fred Isaman   NFS: rewrite dire...
1433
  	void	(*init_hdr)(struct nfs_pgio_header *hdr);
061ae2edb   Fred Isaman   NFS: create compl...
1434
  	void	(*completion)(struct nfs_pgio_header *hdr);
dc602dd70   Trond Myklebust   NFS/pNFS: Fix up ...
1435
  	void	(*reschedule_io)(struct nfs_pgio_header *hdr);
061ae2edb   Fred Isaman   NFS: create compl...
1436
  };
34e137cc7   Bryan Schumaker   NFS: Remove nfs4_...
1437
  struct nfs_unlinkdata {
34e137cc7   Bryan Schumaker   NFS: Remove nfs4_...
1438
1439
  	struct nfs_removeargs args;
  	struct nfs_removeres res;
884be1753   Al Viro   nfs: per-name sil...
1440
1441
  	struct dentry *dentry;
  	wait_queue_head_t wq;
34e137cc7   Bryan Schumaker   NFS: Remove nfs4_...
1442
1443
  	struct rpc_cred	*cred;
  	struct nfs_fattr dir_attr;
8478eaa16   NeilBrown   NFSv4: use expone...
1444
  	long timeout;
34e137cc7   Bryan Schumaker   NFS: Remove nfs4_...
1445
  };
c6bfa1a16   Bryan Schumaker   NFS: Remove nfs4_...
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
  struct nfs_renamedata {
  	struct nfs_renameargs	args;
  	struct nfs_renameres	res;
  	struct rpc_cred		*cred;
  	struct inode		*old_dir;
  	struct dentry		*old_dentry;
  	struct nfs_fattr	old_fattr;
  	struct inode		*new_dir;
  	struct dentry		*new_dentry;
  	struct nfs_fattr	new_fattr;
96f9d8c07   Jeff Layton   nfs: abstract out...
1456
  	void (*complete)(struct rpc_task *, struct nfs_renamedata *);
8478eaa16   NeilBrown   NFSv4: use expone...
1457
  	long timeout;
818a8dbe8   Benjamin Coddington   NFS: nfs_rename()...
1458
  	bool cancelled;
c6bfa1a16   Bryan Schumaker   NFS: Remove nfs4_...
1459
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1460
  struct nfs_access_entry;
45a52a020   Andy Adamson   NFS move nfs_clie...
1461
  struct nfs_client;
e0dca7a05   Trond Myklebust   NFS: Fix a warnin...
1462
  struct rpc_timeout;
ff9099f26   Bryan Schumaker   NFS: Create a try...
1463
1464
  struct nfs_subversion;
  struct nfs_mount_info;
6663ee7f8   Bryan Schumaker   NFS: Create an al...
1465
  struct nfs_client_initdata;
1abb50886   Bryan Schumaker   NFS: Create an re...
1466
  struct nfs_pageio_descriptor;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1467
1468
1469
1470
1471
  
  /*
   * RPC procedure vector for NFSv2/NFSv3 demuxing
   */
  struct nfs_rpc_ops {
c0e07cb68   Chuck Lever   NFS: NFS version ...
1472
  	u32	version;		/* Protocol version */
f786aa90e   Al Viro   constify dentry_o...
1473
  	const struct dentry_operations *dentry_ops;
c5ef1c42c   Arjan van de Ven   [PATCH] mark stru...
1474
1475
  	const struct inode_operations *dir_inode_ops;
  	const struct inode_operations *file_inode_ops;
1788ea6e3   Jeff Layton   nfs: when attempt...
1476
  	const struct file_operations *file_ops;
b1ece737f   Benjamin Coddington   lockd: Introduce ...
1477
  	const struct nlmclnt_operations *nlmclnt_ops;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1478
1479
1480
  
  	int	(*getroot) (struct nfs_server *, struct nfs_fh *,
  			    struct nfs_fsinfo *);
281cad46b   Bryan Schumaker   NFS: Create a sub...
1481
1482
  	struct vfsmount *(*submount) (struct nfs_server *, struct dentry *,
  				      struct nfs_fh *, struct nfs_fattr *);
ff9099f26   Bryan Schumaker   NFS: Create a try...
1483
1484
  	struct dentry *(*try_mount) (int, const char *, struct nfs_mount_info *,
  				     struct nfs_subversion *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1485
  	int	(*getattr) (struct nfs_server *, struct nfs_fh *,
1775fd3e8   David Quigley   NFS:Add labels to...
1486
  			    struct nfs_fattr *, struct nfs4_label *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1487
1488
  	int	(*setattr) (struct dentry *, struct nfs_fattr *,
  			    struct iattr *);
beffb8feb   Al Viro   qstr: constify in...
1489
  	int	(*lookup)  (struct inode *, const struct qstr *,
1775fd3e8   David Quigley   NFS:Add labels to...
1490
1491
  			    struct nfs_fh *, struct nfs_fattr *,
  			    struct nfs4_label *);
5b5faaf6d   Jeff Layton   nfs4: add NFSv4 L...
1492
1493
  	int	(*lookupp) (struct inode *, struct nfs_fh *,
  			    struct nfs_fattr *, struct nfs4_label *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1494
1495
1496
  	int	(*access)  (struct inode *, struct nfs_access_entry *);
  	int	(*readlink)(struct inode *, struct page *, unsigned int,
  			    unsigned int);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1497
  	int	(*create)  (struct inode *, struct dentry *,
8867fe589   Miklos Szeredi   nfs: clean up ->c...
1498
  			    struct iattr *, int);
beffb8feb   Al Viro   qstr: constify in...
1499
  	int	(*remove)  (struct inode *, const struct qstr *);
e4eff1a62   Trond Myklebust   SUNRPC: Clean up ...
1500
  	void	(*unlink_setup)  (struct rpc_message *, struct inode *dir);
34e137cc7   Bryan Schumaker   NFS: Remove nfs4_...
1501
  	void	(*unlink_rpc_prepare) (struct rpc_task *, struct nfs_unlinkdata *);
e4eff1a62   Trond Myklebust   SUNRPC: Clean up ...
1502
  	int	(*unlink_done) (struct rpc_task *, struct inode *);
d3d4152a5   Jeff Layton   nfs: make sillyre...
1503
  	void	(*rename_setup)  (struct rpc_message *msg, struct inode *dir);
c6bfa1a16   Bryan Schumaker   NFS: Remove nfs4_...
1504
  	void	(*rename_rpc_prepare)(struct rpc_task *task, struct nfs_renamedata *);
d3d4152a5   Jeff Layton   nfs: make sillyre...
1505
  	int	(*rename_done) (struct rpc_task *task, struct inode *old_dir, struct inode *new_dir);
beffb8feb   Al Viro   qstr: constify in...
1506
  	int	(*link)    (struct inode *, struct inode *, const struct qstr *);
94a6d7532   Chuck Lever   NFS: Use cached p...
1507
1508
  	int	(*symlink) (struct inode *, struct dentry *, struct page *,
  			    unsigned int, struct iattr *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1509
  	int	(*mkdir)   (struct inode *, struct dentry *, struct iattr *);
beffb8feb   Al Viro   qstr: constify in...
1510
  	int	(*rmdir)   (struct inode *, const struct qstr *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1511
  	int	(*readdir) (struct dentry *, struct rpc_cred *,
a7a3b1e97   Benjamin Coddington   NFS: convert flag...
1512
  			    u64, struct page **, unsigned int, bool);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1513
1514
1515
1516
1517
1518
1519
1520
  	int	(*mknod)   (struct inode *, struct dentry *, struct iattr *,
  			    dev_t);
  	int	(*statfs)  (struct nfs_server *, struct nfs_fh *,
  			    struct nfs_fsstat *);
  	int	(*fsinfo)  (struct nfs_server *, struct nfs_fh *,
  			    struct nfs_fsinfo *);
  	int	(*pathconf) (struct nfs_server *, struct nfs_fh *,
  			     struct nfs_pathconf *);
e9326dcab   David Howells   NFS: Add a server...
1521
  	int	(*set_capabilities)(struct nfs_server *, struct nfs_fh *);
a7a3b1e97   Benjamin Coddington   NFS: convert flag...
1522
  	int	(*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
d45f60c67   Weston Andros Adamson   nfs: merge nfs_pg...
1523
1524
1525
1526
1527
1528
  	int	(*pgio_rpc_prepare)(struct rpc_task *,
  				    struct nfs_pgio_header *);
  	void	(*read_setup)(struct nfs_pgio_header *, struct rpc_message *);
  	int	(*read_done)(struct rpc_task *, struct nfs_pgio_header *);
  	void	(*write_setup)(struct nfs_pgio_header *, struct rpc_message *);
  	int	(*write_done)(struct rpc_task *, struct nfs_pgio_header *);
0b7c01533   Fred Isaman   NFS: add a struct...
1529
1530
1531
  	void	(*commit_setup) (struct nfs_commit_data *, struct rpc_message *);
  	void	(*commit_rpc_prepare)(struct rpc_task *, struct nfs_commit_data *);
  	int	(*commit_done) (struct rpc_task *, struct nfs_commit_data *);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1532
  	int	(*lock)(struct file *, int, struct file_lock *);
2116271a3   Trond Myklebust   NFS: Add correct ...
1533
  	int	(*lock_check_bounds)(const struct file_lock *);
ada70d942   Trond Myklebust   [PATCH] NFS: Add ...
1534
  	void	(*clear_acl_cache)(struct inode *);
7fe5c398f   Trond Myklebust   NFS: Optimise NFS...
1535
  	void	(*close_context)(struct nfs_open_context *ctx, int);
2b484297e   Trond Myklebust   NFS: Add an 'open...
1536
1537
1538
  	struct inode * (*open_context) (struct inode *dir,
  				struct nfs_open_context *ctx,
  				int open_flags,
5bc2afc2b   Trond Myklebust   NFSv4: Honour the...
1539
1540
  				struct iattr *iattr,
  				int *);
011e2a7fd   Bryan Schumaker   NFS: Create a hav...
1541
  	int (*have_delegation)(struct inode *, fmode_t);
57ec14c55   Bryan Schumaker   NFS: Create a ret...
1542
  	int (*return_delegation)(struct inode *);
6663ee7f8   Bryan Schumaker   NFS: Create an al...
1543
  	struct nfs_client *(*alloc_client) (const struct nfs_client_initdata *);
5c6e5b60a   Trond Myklebust   NFS: Fix an Oops ...
1544
1545
  	struct nfs_client *(*init_client) (struct nfs_client *,
  				const struct nfs_client_initdata *);
cdb7ecede   Bryan Schumaker   NFS: Create a fre...
1546
  	void	(*free_client) (struct nfs_client *);
1179acc6a   Bryan Schumaker   NFS: Only initial...
1547
1548
1549
  	struct nfs_server *(*create_server)(struct nfs_mount_info *, struct nfs_subversion *);
  	struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *,
  					   struct nfs_fattr *, rpc_authflavor_t);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
  };
  
  /*
   * 	NFS_CALL(getattr, inode, (fattr));
   * into
   *	NFS_PROTO(inode)->getattr(fattr);
   */
  #define NFS_CALL(op, inode, args)	NFS_PROTO(inode)->op args
  
  /*
   * Function vectors etc. for the NFS client
   */
509de8111   David Howells   NFS: Add extra co...
1562
1563
1564
  extern const struct nfs_rpc_ops	nfs_v2_clientops;
  extern const struct nfs_rpc_ops	nfs_v3_clientops;
  extern const struct nfs_rpc_ops	nfs_v4_clientops;
a613fa168   Trond Myklebust   SUNRPC: constify ...
1565
1566
1567
  extern const struct rpc_version nfs_version2;
  extern const struct rpc_version nfs_version3;
  extern const struct rpc_version nfs_version4;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1568

a613fa168   Trond Myklebust   SUNRPC: constify ...
1569
1570
  extern const struct rpc_version nfsacl_version3;
  extern const struct rpc_program nfsacl_program;
b7fa0554c   Andreas Gruenbacher   [PATCH] NFS: Add ...
1571

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1572
  #endif