xref: /xnu-10002.61.3/bsd/vfs/vnode_if.c (revision 0f4c859e951fba394238ab619495c4e1d54d0f34)
1 /*
2  * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
3  *
4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. The rights granted to you under the License
10  * may not be used to create, or enable the creation or redistribution of,
11  * unlawful or unlicensed copies of an Apple operating system, or to
12  * circumvent, violate, or enable the circumvention or violation of, any
13  * terms of an Apple operating system software license agreement.
14  *
15  * Please obtain a copy of the License at
16  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17  *
18  * The Original Code and all software distributed under the License are
19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23  * Please see the License for the specific language governing rights and
24  * limitations under the License.
25  *
26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27  */
28 /*
29  * Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved
30  * Copyright (c) 1992, 1993, 1994, 1995
31  *	The Regents of the University of California.  All rights reserved.
32  *
33  * Redistribution and use in source and binary forms, with or without
34  * modification, are permitted provided that the following conditions
35  * are met:
36  * 1. Redistributions of source code must retain the above copyright
37  *    notice, this list of conditions and the following disclaimer.
38  * 2. Redistributions in binary form must reproduce the above copyright
39  *    notice, this list of conditions and the following disclaimer in the
40  *    documentation and/or other materials provided with the distribution.
41  * 3. All advertising materials mentioning features or use of this software
42  *    must display the following acknowledgement:
43  *      This product includes software developed by the University of
44  *      California, Berkeley and its contributors.
45  * 4. Neither the name of the University nor the names of its contributors
46  *    may be used to endorse or promote products derived from this software
47  *    without specific prior written permission.
48  *
49  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS AND
50  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
51  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
52  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
53  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
54  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
55  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
56  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
57  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
58  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
59  * SUCH DAMAGE.
60  */
61 
62 
63 /*
64  * Warning: This file is generated automatically.
65  * (Modifications made here may easily be lost!)
66  *
67  * Created by the script:
68  *	@(#)vnode_if.sh	8.7 (Berkeley) 5/11/95
69  */
70 
71 
72 #include <sys/param.h>
73 #include <sys/mount_internal.h>
74 #include <sys/vm.h>
75 #include <sys/vnode_internal.h>
76 
77 struct vnodeop_desc vnop_default_desc = {
78 	0,
79 	"default",
80 	0,
81 	NULL,
82 	VDESC_NO_OFFSET,
83 	VDESC_NO_OFFSET,
84 	VDESC_NO_OFFSET,
85 	VDESC_NO_OFFSET,
86 	VDESC_NO_OFFSET,
87 	NULL
88 };
89 
90 
91 int vnop_lookup_vp_offsets[] = {
92 	VOPARG_OFFSETOF(struct vnop_lookup_args, a_dvp),
93 	VDESC_NO_OFFSET
94 };
95 struct vnodeop_desc vnop_lookup_desc = {
96 	0,
97 	"vnop_lookup",
98 	0,
99 	vnop_lookup_vp_offsets,
100 	VOPARG_OFFSETOF(struct vnop_lookup_args, a_vpp),
101 	VDESC_NO_OFFSET,
102 	VDESC_NO_OFFSET,
103 	VOPARG_OFFSETOF(struct vnop_lookup_args, a_cnp),
104 	VOPARG_OFFSETOF(struct vnop_lookup_args, a_context),
105 	NULL
106 };
107 
108 int vnop_compound_open_vp_offsets[] = {
109 	VOPARG_OFFSETOF(struct vnop_compound_open_args, a_dvp),
110 	VDESC_NO_OFFSET
111 };
112 
113 struct vnodeop_desc vnop_compound_open_desc = {
114 	0,
115 	"vnop_compound_open",
116 	0 | VDESC_VP0_WILLRELE,
117 	vnop_compound_open_vp_offsets,
118 	VOPARG_OFFSETOF(struct vnop_compound_open_args, a_vpp),
119 	VDESC_NO_OFFSET,
120 	VDESC_NO_OFFSET,
121 	VOPARG_OFFSETOF(struct vnop_compound_open_args, a_cnp),
122 	VOPARG_OFFSETOF(struct vnop_compound_open_args, a_context),
123 	NULL
124 };
125 
126 int vnop_create_vp_offsets[] = {
127 	VOPARG_OFFSETOF(struct vnop_create_args, a_dvp),
128 	VDESC_NO_OFFSET
129 };
130 struct vnodeop_desc vnop_create_desc = {
131 	0,
132 	"vnop_create",
133 	0 | VDESC_VP0_WILLRELE,
134 	vnop_create_vp_offsets,
135 	VOPARG_OFFSETOF(struct vnop_create_args, a_vpp),
136 	VDESC_NO_OFFSET,
137 	VDESC_NO_OFFSET,
138 	VOPARG_OFFSETOF(struct vnop_create_args, a_cnp),
139 	VOPARG_OFFSETOF(struct vnop_create_args, a_context),
140 	NULL
141 };
142 
143 int vnop_whiteout_vp_offsets[] = {
144 	VOPARG_OFFSETOF(struct vnop_whiteout_args, a_dvp),
145 	VDESC_NO_OFFSET
146 };
147 struct vnodeop_desc vnop_whiteout_desc = {
148 	0,
149 	"vnop_whiteout",
150 	0 | VDESC_VP0_WILLRELE,
151 	vnop_whiteout_vp_offsets,
152 	VDESC_NO_OFFSET,
153 	VDESC_NO_OFFSET,
154 	VDESC_NO_OFFSET,
155 	VOPARG_OFFSETOF(struct vnop_whiteout_args, a_cnp),
156 	VOPARG_OFFSETOF(struct vnop_whiteout_args, a_context),
157 	NULL
158 };
159 
160 int vnop_mknod_vp_offsets[] = {
161 	VOPARG_OFFSETOF(struct vnop_mknod_args, a_dvp),
162 	VDESC_NO_OFFSET
163 };
164 struct vnodeop_desc vnop_mknod_desc = {
165 	0,
166 	"vnop_mknod",
167 	0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
168 	vnop_mknod_vp_offsets,
169 	VOPARG_OFFSETOF(struct vnop_mknod_args, a_vpp),
170 	VDESC_NO_OFFSET,
171 	VDESC_NO_OFFSET,
172 	VOPARG_OFFSETOF(struct vnop_mknod_args, a_cnp),
173 	VOPARG_OFFSETOF(struct vnop_mknod_args, a_context),
174 	NULL
175 };
176 
177 int vnop_open_vp_offsets[] = {
178 	VOPARG_OFFSETOF(struct vnop_open_args, a_vp),
179 	VDESC_NO_OFFSET
180 };
181 struct vnodeop_desc vnop_open_desc = {
182 	0,
183 	"vnop_open",
184 	0,
185 	vnop_open_vp_offsets,
186 	VDESC_NO_OFFSET,
187 	VDESC_NO_OFFSET,
188 	VDESC_NO_OFFSET,
189 	VDESC_NO_OFFSET,
190 	VOPARG_OFFSETOF(struct vnop_open_args, a_context),
191 	NULL
192 };
193 
194 int vnop_close_vp_offsets[] = {
195 	VOPARG_OFFSETOF(struct vnop_close_args, a_vp),
196 	VDESC_NO_OFFSET
197 };
198 struct vnodeop_desc vnop_close_desc = {
199 	0,
200 	"vnop_close",
201 	0,
202 	vnop_close_vp_offsets,
203 	VDESC_NO_OFFSET,
204 	VDESC_NO_OFFSET,
205 	VDESC_NO_OFFSET,
206 	VDESC_NO_OFFSET,
207 	VOPARG_OFFSETOF(struct vnop_close_args, a_context),
208 	NULL
209 };
210 
211 int vnop_access_vp_offsets[] = {
212 	VOPARG_OFFSETOF(struct vnop_access_args, a_vp),
213 	VDESC_NO_OFFSET
214 };
215 struct vnodeop_desc vnop_access_desc = {
216 	0,
217 	"vnop_access",
218 	0,
219 	vnop_access_vp_offsets,
220 	VDESC_NO_OFFSET,
221 	VDESC_NO_OFFSET,
222 	VDESC_NO_OFFSET,
223 	VDESC_NO_OFFSET,
224 	VOPARG_OFFSETOF(struct vnop_close_args, a_context),
225 	NULL
226 };
227 
228 int vnop_getattr_vp_offsets[] = {
229 	VOPARG_OFFSETOF(struct vnop_getattr_args, a_vp),
230 	VDESC_NO_OFFSET
231 };
232 struct vnodeop_desc vnop_getattr_desc = {
233 	0,
234 	"vnop_getattr",
235 	0,
236 	vnop_getattr_vp_offsets,
237 	VDESC_NO_OFFSET,
238 	VDESC_NO_OFFSET,
239 	VDESC_NO_OFFSET,
240 	VDESC_NO_OFFSET,
241 	VOPARG_OFFSETOF(struct vnop_getattr_args, a_context),
242 	NULL
243 };
244 
245 int vnop_setattr_vp_offsets[] = {
246 	VOPARG_OFFSETOF(struct vnop_setattr_args, a_vp),
247 	VDESC_NO_OFFSET
248 };
249 struct vnodeop_desc vnop_setattr_desc = {
250 	0,
251 	"vnop_setattr",
252 	0,
253 	vnop_setattr_vp_offsets,
254 	VDESC_NO_OFFSET,
255 	VDESC_NO_OFFSET,
256 	VDESC_NO_OFFSET,
257 	VDESC_NO_OFFSET,
258 	VOPARG_OFFSETOF(struct vnop_setattr_args, a_context),
259 	NULL
260 };
261 
262 int vnop_read_vp_offsets[] = {
263 	VOPARG_OFFSETOF(struct vnop_read_args, a_vp),
264 	VDESC_NO_OFFSET
265 };
266 struct vnodeop_desc vnop_read_desc = {
267 	0,
268 	"vnop_read",
269 	0,
270 	vnop_read_vp_offsets,
271 	VDESC_NO_OFFSET,
272 	VDESC_NO_OFFSET,
273 	VDESC_NO_OFFSET,
274 	VDESC_NO_OFFSET,
275 	VOPARG_OFFSETOF(struct vnop_read_args, a_context),
276 	NULL
277 };
278 
279 int vnop_write_vp_offsets[] = {
280 	VOPARG_OFFSETOF(struct vnop_write_args, a_vp),
281 	VDESC_NO_OFFSET
282 };
283 struct vnodeop_desc vnop_write_desc = {
284 	0,
285 	"vnop_write",
286 	0,
287 	vnop_write_vp_offsets,
288 	VDESC_NO_OFFSET,
289 	VDESC_NO_OFFSET,
290 	VDESC_NO_OFFSET,
291 	VDESC_NO_OFFSET,
292 	VOPARG_OFFSETOF(struct vnop_write_args, a_context),
293 	NULL
294 };
295 
296 int vnop_ioctl_vp_offsets[] = {
297 	VOPARG_OFFSETOF(struct vnop_ioctl_args, a_vp),
298 	VDESC_NO_OFFSET
299 };
300 struct vnodeop_desc vnop_ioctl_desc = {
301 	0,
302 	"vnop_ioctl",
303 	0,
304 	vnop_ioctl_vp_offsets,
305 	VDESC_NO_OFFSET,
306 	VDESC_NO_OFFSET,
307 	VDESC_NO_OFFSET,
308 	VDESC_NO_OFFSET,
309 	VOPARG_OFFSETOF(struct vnop_ioctl_args, a_context),
310 	NULL
311 };
312 
313 int vnop_select_vp_offsets[] = {
314 	VOPARG_OFFSETOF(struct vnop_select_args, a_vp),
315 	VDESC_NO_OFFSET
316 };
317 struct vnodeop_desc vnop_select_desc = {
318 	0,
319 	"vnop_select",
320 	0,
321 	vnop_select_vp_offsets,
322 	VDESC_NO_OFFSET,
323 	VDESC_NO_OFFSET,
324 	VDESC_NO_OFFSET,
325 	VDESC_NO_OFFSET,
326 	VOPARG_OFFSETOF(struct vnop_select_args, a_context),
327 	NULL
328 };
329 
330 int vnop_exchange_vp_offsets[] = {
331 	VOPARG_OFFSETOF(struct vnop_exchange_args, a_fvp),
332 	VOPARG_OFFSETOF(struct vnop_exchange_args, a_tvp),
333 	VDESC_NO_OFFSET
334 };
335 struct vnodeop_desc vnop_exchange_desc = {
336 	0,
337 	"vnop_exchange",
338 	0,
339 	vnop_exchange_vp_offsets,
340 	VDESC_NO_OFFSET,
341 	VDESC_NO_OFFSET,
342 	VDESC_NO_OFFSET,
343 	VDESC_NO_OFFSET,
344 	VOPARG_OFFSETOF(struct vnop_exchange_args, a_context),
345 	NULL
346 };
347 
348 int vnop_kqfilt_add_vp_offsets[] = {
349 	VOPARG_OFFSETOF(struct vnop_kqfilt_add_args, a_vp),
350 	VDESC_NO_OFFSET
351 };
352 struct vnodeop_desc vnop_kqfilt_add_desc = {
353 	0,
354 	"vnop_kqfilt_add",
355 	0,
356 	vnop_kqfilt_add_vp_offsets,
357 	VDESC_NO_OFFSET,
358 	VDESC_NO_OFFSET,
359 	VDESC_NO_OFFSET,
360 	VDESC_NO_OFFSET,
361 	VOPARG_OFFSETOF(struct vnop_kqfilt_add_args, a_context),
362 	NULL
363 };
364 
365 int vnop_kqfilt_remove_vp_offsets[] = {
366 	VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args, a_vp),
367 	VDESC_NO_OFFSET
368 };
369 struct vnodeop_desc vnop_kqfilt_remove_desc = {
370 	0,
371 	"vnop_kqfilt_remove",
372 	0,
373 	vnop_kqfilt_remove_vp_offsets,
374 	VDESC_NO_OFFSET,
375 	VDESC_NO_OFFSET,
376 	VDESC_NO_OFFSET,
377 	VDESC_NO_OFFSET,
378 	VOPARG_OFFSETOF(struct vnop_kqfilt_remove_args, a_context),
379 	NULL
380 };
381 
382 int vnop_monitor_vp_offsets[] = {
383 	VOPARG_OFFSETOF(struct vnop_monitor_args, a_vp),
384 	VDESC_NO_OFFSET
385 };
386 struct vnodeop_desc vnop_monitor_desc = {
387 	0,
388 	"vnop_monitor",
389 	0,
390 	vnop_monitor_vp_offsets,
391 	VDESC_NO_OFFSET,
392 	VDESC_NO_OFFSET,
393 	VDESC_NO_OFFSET,
394 	VDESC_NO_OFFSET,
395 	VOPARG_OFFSETOF(struct vnop_monitor_args, a_context),
396 	NULL
397 };
398 
399 int vnop_setlabel_vp_offsets[] = {
400 	VOPARG_OFFSETOF(struct vnop_setlabel_args, a_vp),
401 	VDESC_NO_OFFSET
402 };
403 struct vnodeop_desc vnop_setlabel_desc = {
404 	0,
405 	"vnop_setlabel",
406 	0,
407 	vnop_setlabel_vp_offsets,
408 	VDESC_NO_OFFSET,
409 	VDESC_NO_OFFSET,
410 	VDESC_NO_OFFSET,
411 	VDESC_NO_OFFSET,
412 	VOPARG_OFFSETOF(struct vnop_setlabel_args, a_context),
413 	NULL,
414 };
415 
416 int vnop_revoke_vp_offsets[] = {
417 	VOPARG_OFFSETOF(struct vnop_revoke_args, a_vp),
418 	VDESC_NO_OFFSET
419 };
420 struct vnodeop_desc vnop_revoke_desc = {
421 	0,
422 	"vnop_revoke",
423 	0,
424 	vnop_revoke_vp_offsets,
425 	VDESC_NO_OFFSET,
426 	VDESC_NO_OFFSET,
427 	VDESC_NO_OFFSET,
428 	VDESC_NO_OFFSET,
429 	VDESC_NO_OFFSET,
430 	NULL
431 };
432 
433 int vnop_mmap_check_vp_offsets[] = {
434 	VOPARG_OFFSETOF(struct vnop_mmap_check_args, a_vp),
435 	VDESC_NO_OFFSET
436 };
437 struct vnodeop_desc vnop_mmap_check_desc = {
438 	0,
439 	"vnop_mmap_check",
440 	0,
441 	vnop_mmap_check_vp_offsets,
442 	VDESC_NO_OFFSET,
443 	VDESC_NO_OFFSET,
444 	VDESC_NO_OFFSET,
445 	VDESC_NO_OFFSET,
446 	VDESC_NO_OFFSET,
447 	NULL
448 };
449 
450 int vnop_mmap_vp_offsets[] = {
451 	VOPARG_OFFSETOF(struct vnop_mmap_args, a_vp),
452 	VDESC_NO_OFFSET
453 };
454 struct vnodeop_desc vnop_mmap_desc = {
455 	0,
456 	"vnop_mmap",
457 	0,
458 	vnop_mmap_vp_offsets,
459 	VDESC_NO_OFFSET,
460 	VDESC_NO_OFFSET,
461 	VDESC_NO_OFFSET,
462 	VDESC_NO_OFFSET,
463 	VDESC_NO_OFFSET,
464 	NULL
465 };
466 
467 int vnop_mnomap_vp_offsets[] = {
468 	VOPARG_OFFSETOF(struct vnop_mnomap_args, a_vp),
469 	VDESC_NO_OFFSET
470 };
471 struct vnodeop_desc vnop_mnomap_desc = {
472 	0,
473 	"vnop_mnomap",
474 	0,
475 	vnop_mnomap_vp_offsets,
476 	VDESC_NO_OFFSET,
477 	VDESC_NO_OFFSET,
478 	VDESC_NO_OFFSET,
479 	VDESC_NO_OFFSET,
480 	VDESC_NO_OFFSET,
481 	NULL
482 };
483 
484 int vnop_fsync_vp_offsets[] = {
485 	VOPARG_OFFSETOF(struct vnop_fsync_args, a_vp),
486 	VDESC_NO_OFFSET
487 };
488 struct vnodeop_desc vnop_fsync_desc = {
489 	0,
490 	"vnop_fsync",
491 	0,
492 	vnop_fsync_vp_offsets,
493 	VDESC_NO_OFFSET,
494 	VDESC_NO_OFFSET,
495 	VDESC_NO_OFFSET,
496 	VDESC_NO_OFFSET,
497 	VOPARG_OFFSETOF(struct vnop_fsync_args, a_context),
498 	NULL
499 };
500 
501 int vnop_remove_vp_offsets[] = {
502 	VOPARG_OFFSETOF(struct vnop_remove_args, a_dvp),
503 	VOPARG_OFFSETOF(struct vnop_remove_args, a_vp),
504 	VDESC_NO_OFFSET
505 };
506 struct vnodeop_desc vnop_remove_desc = {
507 	0,
508 	"vnop_remove",
509 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
510 	vnop_remove_vp_offsets,
511 	VDESC_NO_OFFSET,
512 	VDESC_NO_OFFSET,
513 	VDESC_NO_OFFSET,
514 	VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
515 	VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
516 	NULL
517 };
518 
519 int vnop_remove_extended_vp_offsets[] = {
520 	VOPARG_OFFSETOF(struct vnop_remove_args, a_dvp),
521 	VDESC_NO_OFFSET
522 };
523 struct vnodeop_desc vnop_compound_remove_desc = {
524 	0,
525 	"vnop_compound_remove",
526 	0,
527 	vnop_remove_vp_offsets,
528 	VOPARG_OFFSETOF(struct vnop_compound_remove_args, a_vpp),
529 	VDESC_NO_OFFSET,
530 	VDESC_NO_OFFSET,
531 	VOPARG_OFFSETOF(struct vnop_remove_args, a_cnp),
532 	VOPARG_OFFSETOF(struct vnop_remove_args, a_context),
533 	NULL
534 };
535 
536 int vnop_link_vp_offsets[] = {
537 	VOPARG_OFFSETOF(struct vnop_link_args, a_vp),
538 	VOPARG_OFFSETOF(struct vnop_link_args, a_tdvp),
539 	VDESC_NO_OFFSET
540 };
541 struct vnodeop_desc vnop_link_desc = {
542 	0,
543 	"vnop_link",
544 	0 | VDESC_VP1_WILLRELE,
545 	vnop_link_vp_offsets,
546 	VDESC_NO_OFFSET,
547 	VDESC_NO_OFFSET,
548 	VDESC_NO_OFFSET,
549 	VOPARG_OFFSETOF(struct vnop_link_args, a_cnp),
550 	VOPARG_OFFSETOF(struct vnop_link_args, a_context),
551 	NULL
552 };
553 
554 int vnop_rename_vp_offsets[] = {
555 	VOPARG_OFFSETOF(struct vnop_rename_args, a_fdvp),
556 	VOPARG_OFFSETOF(struct vnop_rename_args, a_fvp),
557 	VOPARG_OFFSETOF(struct vnop_rename_args, a_tdvp),
558 	VOPARG_OFFSETOF(struct vnop_rename_args, a_tvp),
559 	VDESC_NO_OFFSET
560 };
561 struct vnodeop_desc vnop_rename_desc = {
562 	0,
563 	"vnop_rename",
564 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
565 	vnop_rename_vp_offsets,
566 	VDESC_NO_OFFSET,
567 	VDESC_NO_OFFSET,
568 	VDESC_NO_OFFSET,
569 	VOPARG_OFFSETOF(struct vnop_rename_args, a_fcnp),
570 	VOPARG_OFFSETOF(struct vnop_rename_args, a_context),
571 	NULL
572 };
573 
574 int vnop_renamex_vp_offsets[] = {
575 	VOPARG_OFFSETOF(struct vnop_renamex_args, a_fdvp),
576 	VOPARG_OFFSETOF(struct vnop_renamex_args, a_fvp),
577 	VOPARG_OFFSETOF(struct vnop_renamex_args, a_tdvp),
578 	VOPARG_OFFSETOF(struct vnop_renamex_args, a_tvp),
579 	VDESC_NO_OFFSET
580 };
581 struct vnodeop_desc vnop_renamex_desc = {
582 	0,
583 	"vnop_renamex",
584 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
585 	vnop_renamex_vp_offsets,
586 	VDESC_NO_OFFSET,
587 	VDESC_NO_OFFSET,
588 	VDESC_NO_OFFSET,
589 	VOPARG_OFFSETOF(struct vnop_renamex_args, a_fcnp),
590 	VOPARG_OFFSETOF(struct vnop_renamex_args, a_context),
591 	NULL
592 };
593 
594 int vnop_compound_rename_vp_offsets[] = {
595 	VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fdvp),
596 	VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fvpp),
597 	VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_tdvp),
598 	VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_tvpp),
599 	VDESC_NO_OFFSET
600 };
601 struct vnodeop_desc vnop_compound_rename_desc = {
602 	0,
603 	"vnop_compound_rename",
604 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE | VDESC_VP3_WILLRELE,
605 	vnop_compound_rename_vp_offsets,
606 	VDESC_NO_OFFSET,
607 	VDESC_NO_OFFSET,
608 	VDESC_NO_OFFSET,
609 	VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_fcnp),
610 	VOPARG_OFFSETOF(struct vnop_compound_rename_args, a_context),
611 	NULL
612 };
613 
614 int vnop_mkdir_vp_offsets[] = {
615 	VOPARG_OFFSETOF(struct vnop_mkdir_args, a_dvp),
616 	VDESC_NO_OFFSET
617 };
618 struct vnodeop_desc vnop_mkdir_desc = {
619 	0,
620 	"vnop_mkdir",
621 	0 | VDESC_VP0_WILLRELE,
622 	vnop_mkdir_vp_offsets,
623 	VOPARG_OFFSETOF(struct vnop_mkdir_args, a_vpp),
624 	VDESC_NO_OFFSET,
625 	VDESC_NO_OFFSET,
626 	VOPARG_OFFSETOF(struct vnop_mkdir_args, a_cnp),
627 	VOPARG_OFFSETOF(struct vnop_mkdir_args, a_context),
628 	NULL
629 };
630 
631 int vnop_compound_mkdir_vp_offsets[] = {
632 	VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_dvp),
633 	VDESC_NO_OFFSET
634 };
635 struct vnodeop_desc vnop_compound_mkdir_desc = {
636 	0,
637 	"vnop_compound_mkdir",
638 	0 | VDESC_VP0_WILLRELE,
639 	vnop_compound_mkdir_vp_offsets,
640 	VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_vpp),
641 	VDESC_NO_OFFSET,
642 	VDESC_NO_OFFSET,
643 	VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_cnp),
644 	VOPARG_OFFSETOF(struct vnop_compound_mkdir_args, a_context),
645 	NULL
646 };
647 
648 
649 int vnop_rmdir_vp_offsets[] = {
650 	VOPARG_OFFSETOF(struct vnop_rmdir_args, a_dvp),
651 	VOPARG_OFFSETOF(struct vnop_rmdir_args, a_vp),
652 	VDESC_NO_OFFSET
653 };
654 struct vnodeop_desc vnop_rmdir_desc = {
655 	0,
656 	"vnop_rmdir",
657 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
658 	vnop_rmdir_vp_offsets,
659 	VDESC_NO_OFFSET,
660 	VDESC_NO_OFFSET,
661 	VDESC_NO_OFFSET,
662 	VOPARG_OFFSETOF(struct vnop_rmdir_args, a_cnp),
663 	VOPARG_OFFSETOF(struct vnop_rmdir_args, a_context),
664 	NULL
665 };
666 
667 int vnop_compound_rmdir_vp_offsets[] = {
668 	VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_dvp),
669 	VDESC_NO_OFFSET
670 };
671 struct vnodeop_desc vnop_compound_rmdir_desc = {
672 	0,
673 	"vnop_compound_rmdir",
674 	0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE,
675 	vnop_rmdir_vp_offsets,
676 	VDESC_NO_OFFSET,
677 	VDESC_NO_OFFSET,
678 	VDESC_NO_OFFSET,
679 	VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_cnp),
680 	VOPARG_OFFSETOF(struct vnop_compound_rmdir_args, a_context),
681 	NULL
682 };
683 
684 int vnop_symlink_vp_offsets[] = {
685 	VOPARG_OFFSETOF(struct vnop_symlink_args, a_dvp),
686 	VDESC_NO_OFFSET
687 };
688 struct vnodeop_desc vnop_symlink_desc = {
689 	0,
690 	"vnop_symlink",
691 	0 | VDESC_VP0_WILLRELE | VDESC_VPP_WILLRELE,
692 	vnop_symlink_vp_offsets,
693 	VOPARG_OFFSETOF(struct vnop_symlink_args, a_vpp),
694 	VDESC_NO_OFFSET,
695 	VDESC_NO_OFFSET,
696 	VOPARG_OFFSETOF(struct vnop_symlink_args, a_cnp),
697 	VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
698 	NULL
699 };
700 
701 int vnop_readdir_vp_offsets[] = {
702 	VOPARG_OFFSETOF(struct vnop_readdir_args, a_vp),
703 	VDESC_NO_OFFSET
704 };
705 struct vnodeop_desc vnop_readdir_desc = {
706 	0,
707 	"vnop_readdir",
708 	0,
709 	vnop_readdir_vp_offsets,
710 	VDESC_NO_OFFSET,
711 	VDESC_NO_OFFSET,
712 	VDESC_NO_OFFSET,
713 	VDESC_NO_OFFSET,
714 	VOPARG_OFFSETOF(struct vnop_symlink_args, a_context),
715 	NULL
716 };
717 
718 int vnop_readdirattr_vp_offsets[] = {
719 	VOPARG_OFFSETOF(struct vnop_readdirattr_args, a_vp),
720 	VDESC_NO_OFFSET
721 };
722 struct vnodeop_desc vnop_readdirattr_desc = {
723 	0,
724 	"vnop_readdirattr",
725 	0,
726 	vnop_readdirattr_vp_offsets,
727 	VDESC_NO_OFFSET,
728 	VDESC_NO_OFFSET,
729 	VDESC_NO_OFFSET,
730 	VDESC_NO_OFFSET,
731 	VOPARG_OFFSETOF(struct vnop_readdirattr_args, a_context),
732 	NULL
733 };
734 
735 int vnop_getattrlistbulk_vp_offsets[] = {
736 	VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args, a_vp),
737 	VDESC_NO_OFFSET
738 };
739 struct vnodeop_desc vnop_getattrlistbulk_desc = {
740 	0,
741 	"vnop_getattrlistbulk",
742 	0,
743 	vnop_getattrlistbulk_vp_offsets,
744 	VDESC_NO_OFFSET,
745 	VDESC_NO_OFFSET,
746 	VDESC_NO_OFFSET,
747 	VDESC_NO_OFFSET,
748 	VOPARG_OFFSETOF(struct vnop_getattrlistbulk_args, a_context),
749 	NULL
750 };
751 
752 int vnop_readlink_vp_offsets[] = {
753 	VOPARG_OFFSETOF(struct vnop_readlink_args, a_vp),
754 	VDESC_NO_OFFSET
755 };
756 struct vnodeop_desc vnop_readlink_desc = {
757 	0,
758 	"vnop_readlink",
759 	0,
760 	vnop_readlink_vp_offsets,
761 	VDESC_NO_OFFSET,
762 	VDESC_NO_OFFSET,
763 	VDESC_NO_OFFSET,
764 	VDESC_NO_OFFSET,
765 	VOPARG_OFFSETOF(struct vnop_readlink_args, a_context),
766 	NULL
767 };
768 
769 int vnop_inactive_vp_offsets[] = {
770 	VOPARG_OFFSETOF(struct vnop_inactive_args, a_vp),
771 	VDESC_NO_OFFSET
772 };
773 struct vnodeop_desc vnop_inactive_desc = {
774 	0,
775 	"vnop_inactive",
776 	0,
777 	vnop_inactive_vp_offsets,
778 	VDESC_NO_OFFSET,
779 	VDESC_NO_OFFSET,
780 	VDESC_NO_OFFSET,
781 	VDESC_NO_OFFSET,
782 	VOPARG_OFFSETOF(struct vnop_inactive_args, a_context),
783 	NULL
784 };
785 
786 int vnop_reclaim_vp_offsets[] = {
787 	VOPARG_OFFSETOF(struct vnop_reclaim_args, a_vp),
788 	VDESC_NO_OFFSET
789 };
790 struct vnodeop_desc vnop_reclaim_desc = {
791 	0,
792 	"vnop_reclaim",
793 	0,
794 	vnop_reclaim_vp_offsets,
795 	VDESC_NO_OFFSET,
796 	VDESC_NO_OFFSET,
797 	VDESC_NO_OFFSET,
798 	VDESC_NO_OFFSET,
799 	VOPARG_OFFSETOF(struct vnop_reclaim_args, a_context),
800 	NULL
801 };
802 
803 int vnop_pathconf_vp_offsets[] = {
804 	VOPARG_OFFSETOF(struct vnop_pathconf_args, a_vp),
805 	VDESC_NO_OFFSET
806 };
807 struct vnodeop_desc vnop_pathconf_desc = {
808 	0,
809 	"vnop_pathconf",
810 	0,
811 	vnop_pathconf_vp_offsets,
812 	VDESC_NO_OFFSET,
813 	VDESC_NO_OFFSET,
814 	VDESC_NO_OFFSET,
815 	VDESC_NO_OFFSET,
816 	VOPARG_OFFSETOF(struct vnop_pathconf_args, a_context),
817 	NULL
818 };
819 
820 int vnop_advlock_vp_offsets[] = {
821 	VOPARG_OFFSETOF(struct vnop_advlock_args, a_vp),
822 	VDESC_NO_OFFSET
823 };
824 struct vnodeop_desc vnop_advlock_desc = {
825 	0,
826 	"vnop_advlock",
827 	0,
828 	vnop_advlock_vp_offsets,
829 	VDESC_NO_OFFSET,
830 	VDESC_NO_OFFSET,
831 	VDESC_NO_OFFSET,
832 	VDESC_NO_OFFSET,
833 	VOPARG_OFFSETOF(struct vnop_advlock_args, a_context),
834 	NULL
835 };
836 
837 int vnop_allocate_vp_offsets[] = {
838 	VOPARG_OFFSETOF(struct vnop_allocate_args, a_vp),
839 	VDESC_NO_OFFSET
840 };
841 struct vnodeop_desc vnop_allocate_desc = {
842 	0,
843 	"vnop_allocate",
844 	0,
845 	vnop_allocate_vp_offsets,
846 	VDESC_NO_OFFSET,
847 	VDESC_NO_OFFSET,
848 	VDESC_NO_OFFSET,
849 	VDESC_NO_OFFSET,
850 	VOPARG_OFFSETOF(struct vnop_allocate_args, a_context),
851 	NULL
852 };
853 
854 int vnop_pagein_vp_offsets[] = {
855 	VOPARG_OFFSETOF(struct vnop_pagein_args, a_vp),
856 	VDESC_NO_OFFSET
857 };
858 struct vnodeop_desc vnop_pagein_desc = {
859 	0,
860 	"vnop_pagein",
861 	0,
862 	vnop_pagein_vp_offsets,
863 	VDESC_NO_OFFSET,
864 	VDESC_NO_OFFSET,
865 	VDESC_NO_OFFSET,
866 	VDESC_NO_OFFSET,
867 	VOPARG_OFFSETOF(struct vnop_pagein_args, a_context),
868 	NULL
869 };
870 
871 int vnop_pageout_vp_offsets[] = {
872 	VOPARG_OFFSETOF(struct vnop_pageout_args, a_vp),
873 	VDESC_NO_OFFSET
874 };
875 struct vnodeop_desc vnop_pageout_desc = {
876 	0,
877 	"vnop_pageout",
878 	0,
879 	vnop_pageout_vp_offsets,
880 	VDESC_NO_OFFSET,
881 	VDESC_NO_OFFSET,
882 	VDESC_NO_OFFSET,
883 	VDESC_NO_OFFSET,
884 	VOPARG_OFFSETOF(struct vnop_pageout_args, a_context),
885 	NULL
886 };
887 
888 int vnop_searchfs_vp_offsets[] = {
889 	VOPARG_OFFSETOF(struct vnop_searchfs_args, a_vp),
890 	VDESC_NO_OFFSET
891 };
892 struct vnodeop_desc vnop_searchfs_desc = {
893 	0,
894 	"vnop_searchfs",
895 	0,
896 	vnop_searchfs_vp_offsets,
897 	VDESC_NO_OFFSET,
898 	VDESC_NO_OFFSET,
899 	VDESC_NO_OFFSET,
900 	VDESC_NO_OFFSET,
901 	VDESC_NO_OFFSET,
902 	NULL
903 };
904 
905 int vnop_copyfile_vp_offsets[] = {
906 	VOPARG_OFFSETOF(struct vnop_copyfile_args, a_fvp),
907 	VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tdvp),
908 	VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tvp),
909 	VDESC_NO_OFFSET
910 };
911 struct vnodeop_desc vnop_copyfile_desc = {
912 	.vdesc_offset = 0,
913 	.vdesc_name = "vnop_copyfile",
914 	.vdesc_flags = 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VP2_WILLRELE,
915 	.vdesc_vp_offsets = vnop_copyfile_vp_offsets,
916 	.vdesc_vpp_offset = VDESC_NO_OFFSET,
917 	.vdesc_cred_offset = VDESC_NO_OFFSET,
918 	.vdesc_proc_offset = VDESC_NO_OFFSET,
919 	.vdesc_componentname_offset = VOPARG_OFFSETOF(struct vnop_copyfile_args, a_tcnp),
920 	.vdesc_context_offset = VDESC_NO_OFFSET,
921 	.vdesc_transports = NULL
922 };
923 
924 int vnop_clonefile_vp_offsets[] = {
925 	VOPARG_OFFSETOF(struct vnop_clonefile_args, a_fvp),
926 	VOPARG_OFFSETOF(struct vnop_clonefile_args, a_dvp),
927 	VDESC_NO_OFFSET
928 };
929 struct vnodeop_desc vnop_clonefile_desc = {
930 	.vdesc_offset = 0,
931 	.vdesc_name = "vnop_clonefile",
932 	.vdesc_flags = 0 | VDESC_VP0_WILLRELE | VDESC_VP1_WILLRELE | VDESC_VPP_WILLRELE,
933 	.vdesc_vp_offsets = vnop_clonefile_vp_offsets,
934 	.vdesc_vpp_offset = VOPARG_OFFSETOF(struct vnop_clonefile_args, a_vpp),
935 	.vdesc_cred_offset = VDESC_NO_OFFSET,
936 	.vdesc_proc_offset = VDESC_NO_OFFSET,
937 	.vdesc_componentname_offset = VOPARG_OFFSETOF(struct vnop_clonefile_args, a_cnp),
938 	.vdesc_context_offset = VOPARG_OFFSETOF(struct vnop_clonefile_args, a_context),
939 	.vdesc_transports = NULL
940 };
941 
942 int vop_getxattr_vp_offsets[] = {
943 	VOPARG_OFFSETOF(struct vnop_getxattr_args, a_vp),
944 	VDESC_NO_OFFSET
945 };
946 struct vnodeop_desc vnop_getxattr_desc = {
947 	0,
948 	"vnop_getxattr",
949 	0,
950 	vop_getxattr_vp_offsets,
951 	VDESC_NO_OFFSET,
952 	VDESC_NO_OFFSET,
953 	VDESC_NO_OFFSET,
954 	VDESC_NO_OFFSET,
955 	VOPARG_OFFSETOF(struct vnop_getxattr_args, a_context),
956 	NULL
957 };
958 
959 int vop_setxattr_vp_offsets[] = {
960 	VOPARG_OFFSETOF(struct vnop_setxattr_args, a_vp),
961 	VDESC_NO_OFFSET
962 };
963 struct vnodeop_desc vnop_setxattr_desc = {
964 	0,
965 	"vnop_setxattr",
966 	0,
967 	vop_setxattr_vp_offsets,
968 	VDESC_NO_OFFSET,
969 	VDESC_NO_OFFSET,
970 	VDESC_NO_OFFSET,
971 	VDESC_NO_OFFSET,
972 	VOPARG_OFFSETOF(struct vnop_setxattr_args, a_context),
973 	NULL
974 };
975 
976 int vop_removexattr_vp_offsets[] = {
977 	VOPARG_OFFSETOF(struct vnop_removexattr_args, a_vp),
978 	VDESC_NO_OFFSET
979 };
980 struct vnodeop_desc vnop_removexattr_desc = {
981 	0,
982 	"vnop_removexattr",
983 	0,
984 	vop_removexattr_vp_offsets,
985 	VDESC_NO_OFFSET,
986 	VDESC_NO_OFFSET,
987 	VDESC_NO_OFFSET,
988 	VDESC_NO_OFFSET,
989 	VOPARG_OFFSETOF(struct vnop_removexattr_args, a_context),
990 	NULL
991 };
992 
993 int vop_listxattr_vp_offsets[] = {
994 	VOPARG_OFFSETOF(struct vnop_listxattr_args, a_vp),
995 	VDESC_NO_OFFSET
996 };
997 struct vnodeop_desc vnop_listxattr_desc = {
998 	0,
999 	"vnop_listxattr",
1000 	0,
1001 	vop_listxattr_vp_offsets,
1002 	VDESC_NO_OFFSET,
1003 	VDESC_NO_OFFSET,
1004 	VDESC_NO_OFFSET,
1005 	VDESC_NO_OFFSET,
1006 	VOPARG_OFFSETOF(struct vnop_listxattr_args, a_context),
1007 	NULL
1008 };
1009 
1010 int vnop_blktooff_vp_offsets[] = {
1011 	VOPARG_OFFSETOF(struct vnop_blktooff_args, a_vp),
1012 	VDESC_NO_OFFSET
1013 };
1014 struct vnodeop_desc vnop_blktooff_desc = {
1015 	0,
1016 	"vnop_blktooff",
1017 	0,
1018 	vnop_blktooff_vp_offsets,
1019 	VDESC_NO_OFFSET,
1020 	VDESC_NO_OFFSET,
1021 	VDESC_NO_OFFSET,
1022 	VDESC_NO_OFFSET,
1023 	VDESC_NO_OFFSET,
1024 	NULL
1025 };
1026 
1027 int vnop_offtoblk_vp_offsets[] = {
1028 	VOPARG_OFFSETOF(struct vnop_offtoblk_args, a_vp),
1029 	VDESC_NO_OFFSET
1030 };
1031 struct vnodeop_desc vnop_offtoblk_desc = {
1032 	0,
1033 	"vnop_offtoblk",
1034 	0,
1035 	vnop_offtoblk_vp_offsets,
1036 	VDESC_NO_OFFSET,
1037 	VDESC_NO_OFFSET,
1038 	VDESC_NO_OFFSET,
1039 	VDESC_NO_OFFSET,
1040 	VDESC_NO_OFFSET,
1041 	NULL
1042 };
1043 
1044 int vnop_blockmap_vp_offsets[] = {
1045 	VOPARG_OFFSETOF(struct vnop_blockmap_args, a_vp),
1046 	VDESC_NO_OFFSET
1047 };
1048 struct vnodeop_desc vnop_blockmap_desc = {
1049 	0,
1050 	"vnop_blockmap",
1051 	0,
1052 	vnop_blockmap_vp_offsets,
1053 	VDESC_NO_OFFSET,
1054 	VDESC_NO_OFFSET,
1055 	VDESC_NO_OFFSET,
1056 	VDESC_NO_OFFSET,
1057 	VDESC_NO_OFFSET,
1058 	NULL
1059 };
1060 
1061 #if NAMEDSTREAMS
1062 int vnop_getnamedstream_vp_offsets[] = {
1063 	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_vp),
1064 	VDESC_NO_OFFSET
1065 };
1066 struct vnodeop_desc vnop_getnamedstream_desc = {
1067 	0,
1068 	"vnop_getnamedstream",
1069 	0,
1070 	vnop_getnamedstream_vp_offsets,
1071 	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_svpp),
1072 	VDESC_NO_OFFSET,
1073 	VDESC_NO_OFFSET,
1074 	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_name),
1075 	VOPARG_OFFSETOF(struct vnop_getnamedstream_args, a_context),
1076 	NULL
1077 };
1078 
1079 int vnop_makenamedstream_vp_offsets[] = {
1080 	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_vp),
1081 	VDESC_NO_OFFSET
1082 };
1083 struct vnodeop_desc vnop_makenamedstream_desc = {
1084 	0,
1085 	"vnop_makenamedstream",
1086 	0, /* flags */
1087 	vnop_makenamedstream_vp_offsets,
1088 	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_svpp),
1089 	VDESC_NO_OFFSET,
1090 	VDESC_NO_OFFSET,
1091 	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_name),
1092 	VOPARG_OFFSETOF(struct vnop_makenamedstream_args, a_context),
1093 	NULL
1094 };
1095 
1096 int vnop_removenamedstream_vp_offsets[] = {
1097 	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_vp),
1098 	VDESC_NO_OFFSET
1099 };
1100 struct vnodeop_desc vnop_removenamedstream_desc = {
1101 	0,
1102 	"vnop_removenamedstream",
1103 	0,
1104 	vnop_removenamedstream_vp_offsets,
1105 	VDESC_NO_OFFSET,
1106 	VDESC_NO_OFFSET,
1107 	VDESC_NO_OFFSET,
1108 	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_name),
1109 	VOPARG_OFFSETOF(struct vnop_removenamedstream_args, a_context),
1110 	NULL
1111 };
1112 #else
1113 int vnop_getnamedstream_vp_offsets[] = {
1114 	VDESC_NO_OFFSET
1115 };
1116 struct vnodeop_desc vnop_getnamedstream_desc = {
1117 	0,
1118 	"vnop_getnamedstream",
1119 	VDESC_DISABLED, /* flags */
1120 	vnop_getnamedstream_vp_offsets,
1121 	VDESC_NO_OFFSET,
1122 	VDESC_NO_OFFSET,
1123 	VDESC_NO_OFFSET,
1124 	VDESC_NO_OFFSET,
1125 	VDESC_NO_OFFSET,
1126 	NULL
1127 };
1128 
1129 int vnop_makenamedstream_vp_offsets[] = {
1130 	VDESC_NO_OFFSET
1131 };
1132 struct vnodeop_desc vnop_makenamedstream_desc = {
1133 	0,
1134 	"vnop_makenamedstream",
1135 	VDESC_DISABLED, /* flags */
1136 	vnop_makenamedstream_vp_offsets,
1137 	VDESC_NO_OFFSET,
1138 	VDESC_NO_OFFSET,
1139 	VDESC_NO_OFFSET,
1140 	VDESC_NO_OFFSET,
1141 	VDESC_NO_OFFSET,
1142 	NULL
1143 };
1144 
1145 int vnop_removenamedstream_vp_offsets[] = {
1146 	VDESC_NO_OFFSET
1147 };
1148 struct vnodeop_desc vnop_removenamedstream_desc = {
1149 	0,
1150 	"vnop_removenamedstream",
1151 	VDESC_DISABLED, /* flags */
1152 	vnop_removenamedstream_vp_offsets,
1153 	VDESC_NO_OFFSET,
1154 	VDESC_NO_OFFSET,
1155 	VDESC_NO_OFFSET,
1156 	VDESC_NO_OFFSET,
1157 	VDESC_NO_OFFSET,
1158 	NULL
1159 };
1160 #endif
1161 
1162 /* Special cases: */
1163 
1164 int vnop_strategy_vp_offsets[] = {
1165 	VDESC_NO_OFFSET
1166 };
1167 struct vnodeop_desc vnop_strategy_desc = {
1168 	0,
1169 	"vnop_strategy",
1170 	0,
1171 	vnop_strategy_vp_offsets,
1172 	VDESC_NO_OFFSET,
1173 	VDESC_NO_OFFSET,
1174 	VDESC_NO_OFFSET,
1175 	VDESC_NO_OFFSET,
1176 	VDESC_NO_OFFSET,
1177 	NULL
1178 };
1179 
1180 int vnop_bwrite_vp_offsets[] = {
1181 	VDESC_NO_OFFSET
1182 };
1183 struct vnodeop_desc vnop_bwrite_desc = {
1184 	0,
1185 	"vnop_bwrite",
1186 	0,
1187 	vnop_bwrite_vp_offsets,
1188 	VDESC_NO_OFFSET,
1189 	VDESC_NO_OFFSET,
1190 	VDESC_NO_OFFSET,
1191 	VDESC_NO_OFFSET,
1192 	VDESC_NO_OFFSET,
1193 	NULL
1194 };
1195 
1196 int vnop_verify_vp_offsets[] = {
1197 	VOPARG_OFFSETOF(struct vnop_verify_args, a_vp),
1198 	VDESC_NO_OFFSET
1199 };
1200 struct vnodeop_desc vnop_verify_desc = {
1201 	.vdesc_offset = 0,
1202 	.vdesc_name = "vnop_verify",
1203 	.vdesc_flags = 0,
1204 	.vdesc_vp_offsets = vnop_verify_vp_offsets,
1205 	.vdesc_vpp_offset = VDESC_NO_OFFSET,
1206 	.vdesc_cred_offset = VDESC_NO_OFFSET,
1207 	.vdesc_proc_offset = VDESC_NO_OFFSET,
1208 	.vdesc_componentname_offset = VDESC_NO_OFFSET,
1209 	.vdesc_context_offset = VOPARG_OFFSETOF(struct vnop_verify_args, a_context),
1210 	.vdesc_transports = NULL
1211 };
1212 
1213 /* End of special cases. */
1214 
1215 struct vnodeop_desc *vfs_op_descs[] = {
1216 	&vnop_default_desc,     /* MUST BE FIRST */
1217 	&vnop_strategy_desc,    /* XXX: SPECIAL CASE */
1218 	&vnop_bwrite_desc,      /* XXX: SPECIAL CASE */
1219 
1220 	&vnop_lookup_desc,
1221 	&vnop_create_desc,
1222 	&vnop_mknod_desc,
1223 	&vnop_whiteout_desc,
1224 	&vnop_open_desc,
1225 	&vnop_compound_open_desc,
1226 	&vnop_close_desc,
1227 	&vnop_access_desc,
1228 	&vnop_getattr_desc,
1229 	&vnop_setattr_desc,
1230 	&vnop_read_desc,
1231 	&vnop_write_desc,
1232 	&vnop_ioctl_desc,
1233 	&vnop_select_desc,
1234 	&vnop_exchange_desc,
1235 	&vnop_kqfilt_add_desc,
1236 	&vnop_kqfilt_remove_desc,
1237 	&vnop_setlabel_desc,
1238 	&vnop_revoke_desc,
1239 	&vnop_mmap_check_desc,
1240 	&vnop_mmap_desc,
1241 	&vnop_mnomap_desc,
1242 	&vnop_fsync_desc,
1243 	&vnop_remove_desc,
1244 	&vnop_compound_remove_desc,
1245 	&vnop_link_desc,
1246 	&vnop_rename_desc,
1247 	&vnop_renamex_desc,
1248 	&vnop_compound_rename_desc,
1249 	&vnop_mkdir_desc,
1250 	&vnop_compound_mkdir_desc,
1251 	&vnop_rmdir_desc,
1252 	&vnop_compound_rmdir_desc,
1253 	&vnop_symlink_desc,
1254 	&vnop_readdir_desc,
1255 	&vnop_readdirattr_desc,
1256 	&vnop_getattrlistbulk_desc,
1257 	&vnop_readlink_desc,
1258 	&vnop_inactive_desc,
1259 	&vnop_reclaim_desc,
1260 	&vnop_pathconf_desc,
1261 	&vnop_advlock_desc,
1262 	&vnop_allocate_desc,
1263 	&vnop_pagein_desc,
1264 	&vnop_pageout_desc,
1265 	&vnop_searchfs_desc,
1266 	&vnop_copyfile_desc,
1267 	&vnop_clonefile_desc,
1268 	&vnop_getxattr_desc,
1269 	&vnop_setxattr_desc,
1270 	&vnop_removexattr_desc,
1271 	&vnop_listxattr_desc,
1272 	&vnop_blktooff_desc,
1273 	&vnop_offtoblk_desc,
1274 	&vnop_blockmap_desc,
1275 	&vnop_monitor_desc,
1276 #if !defined(NAMEDSTREAMS)
1277 	/*
1278 	 * We define the named streams ops descriptors as we _always_ have to
1279 	 * have symbols with their names, and as such we really really need
1280 	 * those symbols to be valid operations descriptors. However if
1281 	 * named streams support is not enabled, we flag these descriptors
1282 	 * as ignored.
1283 	 */
1284 #endif
1285 	&vnop_getnamedstream_desc,
1286 	&vnop_makenamedstream_desc,
1287 	&vnop_removenamedstream_desc,
1288 	&vnop_verify_desc,
1289 	NULL
1290 };
1291