Commit 9104a55dc382c4aae42dff3f54351085cbcb7317
1 parent
9936781d01
Exists in
master
and in
20 other branches
NFSv4: More NFSv4 xdr cleanups
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Showing 1 changed file with 134 additions and 74 deletions Side-by-side Diff
fs/nfs/nfs4xdr.c
... | ... | @@ -72,10 +72,15 @@ |
72 | 72 | */ |
73 | 73 | #define open_owner_id_maxsz (1 + 4) |
74 | 74 | #define lock_owner_id_maxsz (1 + 4) |
75 | +#define decode_lockowner_maxsz (1 + XDR_QUADLEN(IDMAP_NAMESZ)) | |
75 | 76 | #define compound_encode_hdr_maxsz (3 + (NFS4_MAXTAGLEN >> 2)) |
76 | 77 | #define compound_decode_hdr_maxsz (3 + (NFS4_MAXTAGLEN >> 2)) |
77 | 78 | #define op_encode_hdr_maxsz (1) |
78 | 79 | #define op_decode_hdr_maxsz (2) |
80 | +#define encode_stateid_maxsz (XDR_QUADLEN(NFS4_STATEID_SIZE)) | |
81 | +#define decode_stateid_maxsz (XDR_QUADLEN(NFS4_STATEID_SIZE)) | |
82 | +#define encode_verifier_maxsz (XDR_QUADLEN(NFS4_VERIFIER_SIZE)) | |
83 | +#define decode_verifier_maxsz (XDR_QUADLEN(NFS4_VERIFIER_SIZE)) | |
79 | 84 | #define encode_putfh_maxsz (op_encode_hdr_maxsz + 1 + \ |
80 | 85 | (NFS4_FHSIZE >> 2)) |
81 | 86 | #define decode_putfh_maxsz (op_decode_hdr_maxsz) |
... | ... | @@ -96,6 +101,11 @@ |
96 | 101 | #define nfs4_fattr_maxsz (nfs4_fattr_bitmap_maxsz + \ |
97 | 102 | nfs4_fattr_value_maxsz) |
98 | 103 | #define decode_getattr_maxsz (op_decode_hdr_maxsz + nfs4_fattr_maxsz) |
104 | +#define encode_attrs_maxsz (nfs4_fattr_bitmap_maxsz + \ | |
105 | + 1 + 2 + 1 + \ | |
106 | + nfs4_owner_maxsz + \ | |
107 | + nfs4_group_maxsz + \ | |
108 | + 4 + 4) | |
99 | 109 | #define encode_savefh_maxsz (op_encode_hdr_maxsz) |
100 | 110 | #define decode_savefh_maxsz (op_decode_hdr_maxsz) |
101 | 111 | #define encode_restorefh_maxsz (op_encode_hdr_maxsz) |
... | ... | @@ -123,7 +133,7 @@ |
123 | 133 | #define decode_lookup_maxsz (op_decode_hdr_maxsz) |
124 | 134 | #define encode_share_access_maxsz \ |
125 | 135 | (2) |
126 | -#define encode_createmode_maxsz (1 + nfs4_fattr_maxsz) | |
136 | +#define encode_createmode_maxsz (1 + encode_attrs_maxsz) | |
127 | 137 | #define encode_opentype_maxsz (1 + encode_createmode_maxsz) |
128 | 138 | #define encode_claim_null_maxsz (1 + nfs4_name_maxsz) |
129 | 139 | #define encode_open_maxsz (op_encode_hdr_maxsz + \ |
130 | 140 | |
131 | 141 | |
... | ... | @@ -132,14 +142,52 @@ |
132 | 142 | encode_opentype_maxsz + \ |
133 | 143 | encode_claim_null_maxsz) |
134 | 144 | #define decode_ace_maxsz (3 + nfs4_owner_maxsz) |
135 | -#define decode_delegation_maxsz (1 + XDR_QUADLEN(NFS4_STATEID_SIZE) + 1 + \ | |
145 | +#define decode_delegation_maxsz (1 + decode_stateid_maxsz + 1 + \ | |
136 | 146 | decode_ace_maxsz) |
137 | 147 | #define decode_change_info_maxsz (5) |
138 | 148 | #define decode_open_maxsz (op_decode_hdr_maxsz + \ |
139 | - XDR_QUADLEN(NFS4_STATEID_SIZE) + \ | |
149 | + decode_stateid_maxsz + \ | |
140 | 150 | decode_change_info_maxsz + 1 + \ |
141 | 151 | nfs4_fattr_bitmap_maxsz + \ |
142 | 152 | decode_delegation_maxsz) |
153 | +#define encode_open_confirm_maxsz \ | |
154 | + (op_encode_hdr_maxsz + \ | |
155 | + encode_stateid_maxsz + 1) | |
156 | +#define decode_open_confirm_maxsz \ | |
157 | + (op_decode_hdr_maxsz + \ | |
158 | + decode_stateid_maxsz) | |
159 | +#define encode_open_downgrade_maxsz \ | |
160 | + (op_encode_hdr_maxsz + \ | |
161 | + encode_stateid_maxsz + 1 + \ | |
162 | + encode_share_access_maxsz) | |
163 | +#define decode_open_downgrade_maxsz \ | |
164 | + (op_decode_hdr_maxsz + \ | |
165 | + decode_stateid_maxsz) | |
166 | +#define encode_close_maxsz (op_encode_hdr_maxsz + \ | |
167 | + 1 + encode_stateid_maxsz) | |
168 | +#define decode_close_maxsz (op_decode_hdr_maxsz + \ | |
169 | + decode_stateid_maxsz) | |
170 | +#define encode_setattr_maxsz (op_encode_hdr_maxsz + \ | |
171 | + encode_stateid_maxsz + \ | |
172 | + encode_attrs_maxsz) | |
173 | +#define decode_setattr_maxsz (op_decode_hdr_maxsz + \ | |
174 | + nfs4_fattr_bitmap_maxsz) | |
175 | +#define encode_read_maxsz (op_encode_hdr_maxsz + \ | |
176 | + encode_stateid_maxsz + 3) | |
177 | +#define decode_read_maxsz (op_decode_hdr_maxsz + 2) | |
178 | +#define encode_readdir_maxsz (op_encode_hdr_maxsz + \ | |
179 | + 2 + encode_verifier_maxsz + 5) | |
180 | +#define decode_readdir_maxsz (op_decode_hdr_maxsz + \ | |
181 | + decode_verifier_maxsz) | |
182 | +#define encode_readlink_maxsz (op_encode_hdr_maxsz) | |
183 | +#define decode_readlink_maxsz (op_decode_hdr_maxsz + 1) | |
184 | +#define encode_write_maxsz (op_encode_hdr_maxsz + \ | |
185 | + encode_stateid_maxsz + 4) | |
186 | +#define decode_write_maxsz (op_decode_hdr_maxsz + \ | |
187 | + 2 + decode_verifier_maxsz) | |
188 | +#define encode_commit_maxsz (op_encode_hdr_maxsz + 3) | |
189 | +#define decode_commit_maxsz (op_decode_hdr_maxsz + \ | |
190 | + decode_verifier_maxsz) | |
143 | 191 | #define encode_remove_maxsz (op_encode_hdr_maxsz + \ |
144 | 192 | nfs4_name_maxsz) |
145 | 193 | #define encode_rename_maxsz (op_encode_hdr_maxsz + \ |
146 | 194 | |
147 | 195 | |
148 | 196 | |
... | ... | @@ -148,19 +196,44 @@ |
148 | 196 | #define encode_link_maxsz (op_encode_hdr_maxsz + \ |
149 | 197 | nfs4_name_maxsz) |
150 | 198 | #define decode_link_maxsz (op_decode_hdr_maxsz + 5) |
199 | +#define encode_lock_maxsz (op_encode_hdr_maxsz + \ | |
200 | + 7 + \ | |
201 | + 1 + encode_stateid_maxsz + 8) | |
202 | +#define decode_lock_denied_maxsz \ | |
203 | + (8 + decode_lockowner_maxsz) | |
204 | +#define decode_lock_maxsz (op_decode_hdr_maxsz + \ | |
205 | + decode_lock_denied_maxsz) | |
206 | +#define encode_lockt_maxsz (op_encode_hdr_maxsz + 12) | |
207 | +#define decode_lockt_maxsz (op_decode_hdr_maxsz + \ | |
208 | + decode_lock_denied_maxsz) | |
209 | +#define encode_locku_maxsz (op_encode_hdr_maxsz + 3 + \ | |
210 | + encode_stateid_maxsz + \ | |
211 | + 4) | |
212 | +#define decode_locku_maxsz (op_decode_hdr_maxsz + \ | |
213 | + decode_stateid_maxsz) | |
214 | +#define encode_access_maxsz (op_encode_hdr_maxsz + 1) | |
215 | +#define decode_access_maxsz (op_decode_hdr_maxsz + 2) | |
151 | 216 | #define encode_symlink_maxsz (op_encode_hdr_maxsz + \ |
152 | 217 | 1 + nfs4_name_maxsz + \ |
153 | 218 | 1 + \ |
154 | 219 | nfs4_fattr_maxsz) |
155 | 220 | #define decode_symlink_maxsz (op_decode_hdr_maxsz + 8) |
156 | 221 | #define encode_create_maxsz (op_encode_hdr_maxsz + \ |
157 | - 2 + nfs4_name_maxsz + \ | |
158 | - nfs4_fattr_maxsz) | |
222 | + 1 + 2 + nfs4_name_maxsz + \ | |
223 | + encode_attrs_maxsz) | |
159 | 224 | #define decode_create_maxsz (op_decode_hdr_maxsz + \ |
160 | 225 | decode_change_info_maxsz + \ |
161 | 226 | nfs4_fattr_bitmap_maxsz) |
227 | +#define encode_statfs_maxsz (encode_getattr_maxsz) | |
228 | +#define decode_statfs_maxsz (decode_getattr_maxsz) | |
162 | 229 | #define encode_delegreturn_maxsz (op_encode_hdr_maxsz + 4) |
163 | 230 | #define decode_delegreturn_maxsz (op_decode_hdr_maxsz) |
231 | +#define encode_getacl_maxsz (encode_getattr_maxsz) | |
232 | +#define decode_getacl_maxsz (op_decode_hdr_maxsz + \ | |
233 | + nfs4_fattr_bitmap_maxsz + 1) | |
234 | +#define encode_setacl_maxsz (op_encode_hdr_maxsz + \ | |
235 | + encode_stateid_maxsz + 3) | |
236 | +#define decode_setacl_maxsz (decode_setattr_maxsz) | |
164 | 237 | #define encode_fs_locations_maxsz \ |
165 | 238 | (encode_getattr_maxsz) |
166 | 239 | #define decode_fs_locations_maxsz \ |
167 | 240 | |
168 | 241 | |
169 | 242 | |
170 | 243 | |
171 | 244 | |
172 | 245 | |
173 | 246 | |
174 | 247 | |
175 | 248 | |
... | ... | @@ -169,37 +242,37 @@ |
169 | 242 | #define NFS4_dec_compound_sz (1024) /* XXX: large enough? */ |
170 | 243 | #define NFS4_enc_read_sz (compound_encode_hdr_maxsz + \ |
171 | 244 | encode_putfh_maxsz + \ |
172 | - op_encode_hdr_maxsz + 7) | |
245 | + encode_read_maxsz) | |
173 | 246 | #define NFS4_dec_read_sz (compound_decode_hdr_maxsz + \ |
174 | 247 | decode_putfh_maxsz + \ |
175 | - op_decode_hdr_maxsz + 2) | |
248 | + decode_read_maxsz) | |
176 | 249 | #define NFS4_enc_readlink_sz (compound_encode_hdr_maxsz + \ |
177 | 250 | encode_putfh_maxsz + \ |
178 | - op_encode_hdr_maxsz) | |
251 | + encode_readlink_maxsz) | |
179 | 252 | #define NFS4_dec_readlink_sz (compound_decode_hdr_maxsz + \ |
180 | 253 | decode_putfh_maxsz + \ |
181 | - op_decode_hdr_maxsz) | |
254 | + decode_readlink_maxsz) | |
182 | 255 | #define NFS4_enc_readdir_sz (compound_encode_hdr_maxsz + \ |
183 | 256 | encode_putfh_maxsz + \ |
184 | - op_encode_hdr_maxsz + 9) | |
257 | + encode_readdir_maxsz) | |
185 | 258 | #define NFS4_dec_readdir_sz (compound_decode_hdr_maxsz + \ |
186 | 259 | decode_putfh_maxsz + \ |
187 | - op_decode_hdr_maxsz + 2) | |
260 | + decode_readdir_maxsz) | |
188 | 261 | #define NFS4_enc_write_sz (compound_encode_hdr_maxsz + \ |
189 | 262 | encode_putfh_maxsz + \ |
190 | - op_encode_hdr_maxsz + 8 + \ | |
263 | + encode_write_maxsz + \ | |
191 | 264 | encode_getattr_maxsz) |
192 | 265 | #define NFS4_dec_write_sz (compound_decode_hdr_maxsz + \ |
193 | 266 | decode_putfh_maxsz + \ |
194 | - op_decode_hdr_maxsz + 4 + \ | |
267 | + decode_write_maxsz + \ | |
195 | 268 | decode_getattr_maxsz) |
196 | 269 | #define NFS4_enc_commit_sz (compound_encode_hdr_maxsz + \ |
197 | 270 | encode_putfh_maxsz + \ |
198 | - op_encode_hdr_maxsz + 3 + \ | |
271 | + encode_commit_maxsz + \ | |
199 | 272 | encode_getattr_maxsz) |
200 | 273 | #define NFS4_dec_commit_sz (compound_decode_hdr_maxsz + \ |
201 | 274 | decode_putfh_maxsz + \ |
202 | - op_decode_hdr_maxsz + 2 + \ | |
275 | + decode_commit_maxsz + \ | |
203 | 276 | decode_getattr_maxsz) |
204 | 277 | #define NFS4_enc_open_sz (compound_encode_hdr_maxsz + \ |
205 | 278 | encode_putfh_maxsz + \ |
... | ... | @@ -217,13 +290,14 @@ |
217 | 290 | decode_getattr_maxsz + \ |
218 | 291 | decode_restorefh_maxsz + \ |
219 | 292 | decode_getattr_maxsz) |
220 | -#define NFS4_enc_open_confirm_sz \ | |
221 | - (compound_encode_hdr_maxsz + \ | |
222 | - encode_putfh_maxsz + \ | |
223 | - op_encode_hdr_maxsz + 5) | |
224 | -#define NFS4_dec_open_confirm_sz (compound_decode_hdr_maxsz + \ | |
225 | - decode_putfh_maxsz + \ | |
226 | - op_decode_hdr_maxsz + 4) | |
293 | +#define NFS4_enc_open_confirm_sz \ | |
294 | + (compound_encode_hdr_maxsz + \ | |
295 | + encode_putfh_maxsz + \ | |
296 | + encode_open_confirm_maxsz) | |
297 | +#define NFS4_dec_open_confirm_sz \ | |
298 | + (compound_decode_hdr_maxsz + \ | |
299 | + decode_putfh_maxsz + \ | |
300 | + decode_open_confirm_maxsz) | |
227 | 301 | #define NFS4_enc_open_noattr_sz (compound_encode_hdr_maxsz + \ |
228 | 302 | encode_putfh_maxsz + \ |
229 | 303 | encode_open_maxsz + \ |
230 | 304 | |
... | ... | @@ -234,31 +308,30 @@ |
234 | 308 | decode_getattr_maxsz) |
235 | 309 | #define NFS4_enc_open_downgrade_sz \ |
236 | 310 | (compound_encode_hdr_maxsz + \ |
237 | - encode_putfh_maxsz + \ | |
238 | - op_encode_hdr_maxsz + 7 + \ | |
239 | - encode_getattr_maxsz) | |
311 | + encode_putfh_maxsz + \ | |
312 | + encode_open_downgrade_maxsz + \ | |
313 | + encode_getattr_maxsz) | |
240 | 314 | #define NFS4_dec_open_downgrade_sz \ |
241 | 315 | (compound_decode_hdr_maxsz + \ |
242 | - decode_putfh_maxsz + \ | |
243 | - op_decode_hdr_maxsz + 4 + \ | |
244 | - decode_getattr_maxsz) | |
245 | -#define NFS4_enc_close_sz (compound_encode_hdr_maxsz + \ | |
246 | - encode_putfh_maxsz + \ | |
247 | - op_encode_hdr_maxsz + 5 + \ | |
248 | - encode_getattr_maxsz) | |
249 | -#define NFS4_dec_close_sz (compound_decode_hdr_maxsz + \ | |
250 | - decode_putfh_maxsz + \ | |
251 | - op_decode_hdr_maxsz + 4 + \ | |
252 | - decode_getattr_maxsz) | |
253 | -#define NFS4_enc_setattr_sz (compound_encode_hdr_maxsz + \ | |
254 | - encode_putfh_maxsz + \ | |
255 | - op_encode_hdr_maxsz + 4 + \ | |
256 | - nfs4_fattr_maxsz + \ | |
257 | - encode_getattr_maxsz) | |
258 | -#define NFS4_dec_setattr_sz (compound_decode_hdr_maxsz + \ | |
259 | - decode_putfh_maxsz + \ | |
260 | - op_decode_hdr_maxsz + 3 + \ | |
261 | - nfs4_fattr_maxsz) | |
316 | + decode_putfh_maxsz + \ | |
317 | + decode_open_downgrade_maxsz + \ | |
318 | + decode_getattr_maxsz) | |
319 | +#define NFS4_enc_close_sz (compound_encode_hdr_maxsz + \ | |
320 | + encode_putfh_maxsz + \ | |
321 | + encode_close_maxsz + \ | |
322 | + encode_getattr_maxsz) | |
323 | +#define NFS4_dec_close_sz (compound_decode_hdr_maxsz + \ | |
324 | + decode_putfh_maxsz + \ | |
325 | + decode_close_maxsz + \ | |
326 | + decode_getattr_maxsz) | |
327 | +#define NFS4_enc_setattr_sz (compound_encode_hdr_maxsz + \ | |
328 | + encode_putfh_maxsz + \ | |
329 | + encode_setattr_maxsz + \ | |
330 | + encode_getattr_maxsz) | |
331 | +#define NFS4_dec_setattr_sz (compound_decode_hdr_maxsz + \ | |
332 | + decode_putfh_maxsz + \ | |
333 | + decode_setattr_maxsz + \ | |
334 | + decode_getattr_maxsz) | |
262 | 335 | #define NFS4_enc_fsinfo_sz (compound_encode_hdr_maxsz + \ |
263 | 336 | encode_putfh_maxsz + \ |
264 | 337 | encode_fsinfo_maxsz) |
265 | 338 | |
266 | 339 | |
267 | 340 | |
268 | 341 | |
269 | 342 | |
270 | 343 | |
... | ... | @@ -285,39 +358,28 @@ |
285 | 358 | decode_fsinfo_maxsz) |
286 | 359 | #define NFS4_enc_lock_sz (compound_encode_hdr_maxsz + \ |
287 | 360 | encode_putfh_maxsz + \ |
288 | - encode_getattr_maxsz + \ | |
289 | - op_encode_hdr_maxsz + \ | |
290 | - 1 + 1 + 2 + 2 + \ | |
291 | - 1 + 4 + 1 + 2 + \ | |
292 | - lock_owner_id_maxsz) | |
361 | + encode_lock_maxsz) | |
293 | 362 | #define NFS4_dec_lock_sz (compound_decode_hdr_maxsz + \ |
294 | 363 | decode_putfh_maxsz + \ |
295 | - decode_getattr_maxsz + \ | |
296 | - op_decode_hdr_maxsz + \ | |
297 | - 2 + 2 + 1 + 2 + \ | |
298 | - lock_owner_id_maxsz) | |
364 | + decode_lock_maxsz) | |
299 | 365 | #define NFS4_enc_lockt_sz (compound_encode_hdr_maxsz + \ |
300 | 366 | encode_putfh_maxsz + \ |
301 | - encode_getattr_maxsz + \ | |
302 | - op_encode_hdr_maxsz + \ | |
303 | - 1 + 2 + 2 + 2 + \ | |
304 | - lock_owner_id_maxsz) | |
305 | -#define NFS4_dec_lockt_sz (NFS4_dec_lock_sz) | |
367 | + encode_lockt_maxsz) | |
368 | +#define NFS4_dec_lockt_sz (compound_decode_hdr_maxsz + \ | |
369 | + decode_putfh_maxsz + \ | |
370 | + decode_lockt_maxsz) | |
306 | 371 | #define NFS4_enc_locku_sz (compound_encode_hdr_maxsz + \ |
307 | 372 | encode_putfh_maxsz + \ |
308 | - encode_getattr_maxsz + \ | |
309 | - op_encode_hdr_maxsz + \ | |
310 | - 1 + 1 + 4 + 2 + 2) | |
373 | + encode_locku_maxsz) | |
311 | 374 | #define NFS4_dec_locku_sz (compound_decode_hdr_maxsz + \ |
312 | 375 | decode_putfh_maxsz + \ |
313 | - decode_getattr_maxsz + \ | |
314 | - op_decode_hdr_maxsz + 4) | |
376 | + decode_locku_maxsz) | |
315 | 377 | #define NFS4_enc_access_sz (compound_encode_hdr_maxsz + \ |
316 | 378 | encode_putfh_maxsz + \ |
317 | - op_encode_hdr_maxsz + 1) | |
379 | + encode_access_maxsz) | |
318 | 380 | #define NFS4_dec_access_sz (compound_decode_hdr_maxsz + \ |
319 | 381 | decode_putfh_maxsz + \ |
320 | - op_decode_hdr_maxsz + 2) | |
382 | + decode_access_maxsz) | |
321 | 383 | #define NFS4_enc_getattr_sz (compound_encode_hdr_maxsz + \ |
322 | 384 | encode_putfh_maxsz + \ |
323 | 385 | encode_getattr_maxsz) |
324 | 386 | |
... | ... | @@ -416,10 +478,10 @@ |
416 | 478 | decode_getattr_maxsz) |
417 | 479 | #define NFS4_enc_statfs_sz (compound_encode_hdr_maxsz + \ |
418 | 480 | encode_putfh_maxsz + \ |
419 | - encode_getattr_maxsz) | |
481 | + encode_statfs_maxsz) | |
420 | 482 | #define NFS4_dec_statfs_sz (compound_decode_hdr_maxsz + \ |
421 | 483 | decode_putfh_maxsz + \ |
422 | - op_decode_hdr_maxsz + 12) | |
484 | + decode_statfs_maxsz) | |
423 | 485 | #define NFS4_enc_server_caps_sz (compound_encode_hdr_maxsz + \ |
424 | 486 | encode_putfh_maxsz + \ |
425 | 487 | encode_getattr_maxsz) |
426 | 488 | |
427 | 489 | |
428 | 490 | |
... | ... | @@ -435,18 +497,16 @@ |
435 | 497 | decode_getattr_maxsz) |
436 | 498 | #define NFS4_enc_getacl_sz (compound_encode_hdr_maxsz + \ |
437 | 499 | encode_putfh_maxsz + \ |
438 | - encode_getattr_maxsz) | |
500 | + encode_getacl_maxsz) | |
439 | 501 | #define NFS4_dec_getacl_sz (compound_decode_hdr_maxsz + \ |
440 | 502 | decode_putfh_maxsz + \ |
441 | - op_decode_hdr_maxsz + \ | |
442 | - nfs4_fattr_bitmap_maxsz + 1) | |
503 | + decode_getacl_maxsz) | |
443 | 504 | #define NFS4_enc_setacl_sz (compound_encode_hdr_maxsz + \ |
444 | 505 | encode_putfh_maxsz + \ |
445 | - op_encode_hdr_maxsz + 4 + \ | |
446 | - nfs4_fattr_bitmap_maxsz + 1) | |
506 | + encode_setacl_maxsz) | |
447 | 507 | #define NFS4_dec_setacl_sz (compound_decode_hdr_maxsz + \ |
448 | 508 | decode_putfh_maxsz + \ |
449 | - op_decode_hdr_maxsz + nfs4_fattr_bitmap_maxsz) | |
509 | + decode_setacl_maxsz) | |
450 | 510 | #define NFS4_enc_fs_locations_sz \ |
451 | 511 | (compound_encode_hdr_maxsz + \ |
452 | 512 | encode_putfh_maxsz + \ |