4 * Warning: DO NOT EDIT! This file is automatically generated!
5 * (Modifications made here may easily be lost!)
7 * Created from the file:
8 * NetBSD: vnode_if.src,v 1.58 2008/11/15 19:08:12 pooka Exp
10 * NetBSD: vnode_if.sh,v 1.53 2009/10/15 00:29:40 pooka Exp
14 * Copyright (c) 1992, 1993, 1994, 1995
15 * The Regents of the University of California. All rights reserved.
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions
20 * 1. Redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer.
22 * 2. Redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution.
25 * 3. Neither the name of the University nor the names of its contributors
26 * may be used to endorse or promote products derived from this software
27 * without specific prior written permission.
29 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
30 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
31 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
32 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
33 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
34 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
35 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
37 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
38 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
42 #include <sys/cdefs.h>
43 __KERNEL_RCSID(0, "$NetBSD$");
45 #include <sys/param.h>
46 #include <sys/mount.h>
48 #include <sys/vnode.h>
50 #include <rump/rumpvnode_if.h>
51 #include "rump_private.h"
53 const struct vnodeop_desc rump_vop_default_desc
= {
67 const int rump_vop_bwrite_vp_offsets
[] = {
70 const struct vnodeop_desc rump_vop_bwrite_desc
= {
71 RUMP_VOP_BWRITE_DESCOFFSET
,
74 rump_vop_bwrite_vp_offsets
,
81 RUMP_VOP_BWRITE(struct buf
*bp
)
85 struct rump_vop_bwrite_args a
;
86 a
.a_desc
= VDESC(rump_vop_bwrite
);
88 mpsafe
= (bp
->b_vp
->v_vflag
& VV_MPSAFE
);
90 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
91 error
= (VCALL(bp
->b_vp
, VOFFSET(rump_vop_bwrite
), &a
));
92 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
97 /* End of special cases */
99 const int rump_vop_lookup_vp_offsets
[] = {
100 VOPARG_OFFSETOF(struct rump_vop_lookup_args
,a_dvp
),
103 const struct vnodeop_desc rump_vop_lookup_desc
= {
104 RUMP_VOP_LOOKUP_DESCOFFSET
,
107 rump_vop_lookup_vp_offsets
,
108 VOPARG_OFFSETOF(struct rump_vop_lookup_args
, a_vpp
),
110 VOPARG_OFFSETOF(struct rump_vop_lookup_args
, a_cnp
),
114 RUMP_VOP_LOOKUP(struct vnode
*dvp
,
116 struct componentname
*cnp
)
120 struct rump_vop_lookup_args a
;
121 a
.a_desc
= VDESC(rump_vop_lookup
);
125 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
127 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
128 error
= (VCALL(dvp
, VOFFSET(rump_vop_lookup
), &a
));
129 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
133 KASSERT((*vpp
)->v_size
!= VSIZENOTSET
134 && (*vpp
)->v_writesize
!= VSIZENOTSET
);
135 #endif /* DIAGNOSTIC */
139 const int rump_vop_create_vp_offsets
[] = {
140 VOPARG_OFFSETOF(struct rump_vop_create_args
,a_dvp
),
143 const struct vnodeop_desc rump_vop_create_desc
= {
144 RUMP_VOP_CREATE_DESCOFFSET
,
146 0 | VDESC_VP0_WILLPUT
,
147 rump_vop_create_vp_offsets
,
148 VOPARG_OFFSETOF(struct rump_vop_create_args
, a_vpp
),
150 VOPARG_OFFSETOF(struct rump_vop_create_args
, a_cnp
),
154 RUMP_VOP_CREATE(struct vnode
*dvp
,
156 struct componentname
*cnp
,
161 struct rump_vop_create_args a
;
162 a
.a_desc
= VDESC(rump_vop_create
);
167 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
169 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
170 error
= (VCALL(dvp
, VOFFSET(rump_vop_create
), &a
));
171 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
175 KASSERT((*vpp
)->v_size
!= VSIZENOTSET
176 && (*vpp
)->v_writesize
!= VSIZENOTSET
);
177 #endif /* DIAGNOSTIC */
181 const int rump_vop_mknod_vp_offsets
[] = {
182 VOPARG_OFFSETOF(struct rump_vop_mknod_args
,a_dvp
),
185 const struct vnodeop_desc rump_vop_mknod_desc
= {
186 RUMP_VOP_MKNOD_DESCOFFSET
,
188 0 | VDESC_VP0_WILLPUT
,
189 rump_vop_mknod_vp_offsets
,
190 VOPARG_OFFSETOF(struct rump_vop_mknod_args
, a_vpp
),
192 VOPARG_OFFSETOF(struct rump_vop_mknod_args
, a_cnp
),
196 RUMP_VOP_MKNOD(struct vnode
*dvp
,
198 struct componentname
*cnp
,
203 struct rump_vop_mknod_args a
;
204 a
.a_desc
= VDESC(rump_vop_mknod
);
209 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
211 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
212 error
= (VCALL(dvp
, VOFFSET(rump_vop_mknod
), &a
));
213 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
217 KASSERT((*vpp
)->v_size
!= VSIZENOTSET
218 && (*vpp
)->v_writesize
!= VSIZENOTSET
);
219 #endif /* DIAGNOSTIC */
223 const int rump_vop_open_vp_offsets
[] = {
224 VOPARG_OFFSETOF(struct rump_vop_open_args
,a_vp
),
227 const struct vnodeop_desc rump_vop_open_desc
= {
228 RUMP_VOP_OPEN_DESCOFFSET
,
231 rump_vop_open_vp_offsets
,
233 VOPARG_OFFSETOF(struct rump_vop_open_args
, a_cred
),
238 RUMP_VOP_OPEN(struct vnode
*vp
,
244 struct rump_vop_open_args a
;
245 a
.a_desc
= VDESC(rump_vop_open
);
249 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
251 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
252 error
= (VCALL(vp
, VOFFSET(rump_vop_open
), &a
));
253 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
258 const int rump_vop_close_vp_offsets
[] = {
259 VOPARG_OFFSETOF(struct rump_vop_close_args
,a_vp
),
262 const struct vnodeop_desc rump_vop_close_desc
= {
263 RUMP_VOP_CLOSE_DESCOFFSET
,
266 rump_vop_close_vp_offsets
,
268 VOPARG_OFFSETOF(struct rump_vop_close_args
, a_cred
),
273 RUMP_VOP_CLOSE(struct vnode
*vp
,
279 struct rump_vop_close_args a
;
280 a
.a_desc
= VDESC(rump_vop_close
);
284 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
286 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
287 error
= (VCALL(vp
, VOFFSET(rump_vop_close
), &a
));
288 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
293 const int rump_vop_access_vp_offsets
[] = {
294 VOPARG_OFFSETOF(struct rump_vop_access_args
,a_vp
),
297 const struct vnodeop_desc rump_vop_access_desc
= {
298 RUMP_VOP_ACCESS_DESCOFFSET
,
301 rump_vop_access_vp_offsets
,
303 VOPARG_OFFSETOF(struct rump_vop_access_args
, a_cred
),
308 RUMP_VOP_ACCESS(struct vnode
*vp
,
314 struct rump_vop_access_args a
;
315 a
.a_desc
= VDESC(rump_vop_access
);
319 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
321 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
322 error
= (VCALL(vp
, VOFFSET(rump_vop_access
), &a
));
323 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
328 const int rump_vop_getattr_vp_offsets
[] = {
329 VOPARG_OFFSETOF(struct rump_vop_getattr_args
,a_vp
),
332 const struct vnodeop_desc rump_vop_getattr_desc
= {
333 RUMP_VOP_GETATTR_DESCOFFSET
,
336 rump_vop_getattr_vp_offsets
,
338 VOPARG_OFFSETOF(struct rump_vop_getattr_args
, a_cred
),
343 RUMP_VOP_GETATTR(struct vnode
*vp
,
349 struct rump_vop_getattr_args a
;
350 a
.a_desc
= VDESC(rump_vop_getattr
);
354 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
356 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
357 error
= (VCALL(vp
, VOFFSET(rump_vop_getattr
), &a
));
358 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
363 const int rump_vop_setattr_vp_offsets
[] = {
364 VOPARG_OFFSETOF(struct rump_vop_setattr_args
,a_vp
),
367 const struct vnodeop_desc rump_vop_setattr_desc
= {
368 RUMP_VOP_SETATTR_DESCOFFSET
,
371 rump_vop_setattr_vp_offsets
,
373 VOPARG_OFFSETOF(struct rump_vop_setattr_args
, a_cred
),
378 RUMP_VOP_SETATTR(struct vnode
*vp
,
384 struct rump_vop_setattr_args a
;
385 a
.a_desc
= VDESC(rump_vop_setattr
);
389 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
391 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
392 error
= (VCALL(vp
, VOFFSET(rump_vop_setattr
), &a
));
393 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
398 const int rump_vop_read_vp_offsets
[] = {
399 VOPARG_OFFSETOF(struct rump_vop_read_args
,a_vp
),
402 const struct vnodeop_desc rump_vop_read_desc
= {
403 RUMP_VOP_READ_DESCOFFSET
,
406 rump_vop_read_vp_offsets
,
408 VOPARG_OFFSETOF(struct rump_vop_read_args
, a_cred
),
413 RUMP_VOP_READ(struct vnode
*vp
,
420 struct rump_vop_read_args a
;
421 a
.a_desc
= VDESC(rump_vop_read
);
426 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
428 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
429 error
= (VCALL(vp
, VOFFSET(rump_vop_read
), &a
));
430 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
435 const int rump_vop_write_vp_offsets
[] = {
436 VOPARG_OFFSETOF(struct rump_vop_write_args
,a_vp
),
439 const struct vnodeop_desc rump_vop_write_desc
= {
440 RUMP_VOP_WRITE_DESCOFFSET
,
443 rump_vop_write_vp_offsets
,
445 VOPARG_OFFSETOF(struct rump_vop_write_args
, a_cred
),
450 RUMP_VOP_WRITE(struct vnode
*vp
,
457 struct rump_vop_write_args a
;
458 a
.a_desc
= VDESC(rump_vop_write
);
463 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
465 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
466 error
= (VCALL(vp
, VOFFSET(rump_vop_write
), &a
));
467 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
472 const int rump_vop_ioctl_vp_offsets
[] = {
473 VOPARG_OFFSETOF(struct rump_vop_ioctl_args
,a_vp
),
476 const struct vnodeop_desc rump_vop_ioctl_desc
= {
477 RUMP_VOP_IOCTL_DESCOFFSET
,
480 rump_vop_ioctl_vp_offsets
,
482 VOPARG_OFFSETOF(struct rump_vop_ioctl_args
, a_cred
),
487 RUMP_VOP_IOCTL(struct vnode
*vp
,
495 struct rump_vop_ioctl_args a
;
496 a
.a_desc
= VDESC(rump_vop_ioctl
);
498 a
.a_command
= command
;
502 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
504 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
505 error
= (VCALL(vp
, VOFFSET(rump_vop_ioctl
), &a
));
506 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
511 const int rump_vop_fcntl_vp_offsets
[] = {
512 VOPARG_OFFSETOF(struct rump_vop_fcntl_args
,a_vp
),
515 const struct vnodeop_desc rump_vop_fcntl_desc
= {
516 RUMP_VOP_FCNTL_DESCOFFSET
,
519 rump_vop_fcntl_vp_offsets
,
521 VOPARG_OFFSETOF(struct rump_vop_fcntl_args
, a_cred
),
526 RUMP_VOP_FCNTL(struct vnode
*vp
,
534 struct rump_vop_fcntl_args a
;
535 a
.a_desc
= VDESC(rump_vop_fcntl
);
537 a
.a_command
= command
;
541 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
543 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
544 error
= (VCALL(vp
, VOFFSET(rump_vop_fcntl
), &a
));
545 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
550 const int rump_vop_poll_vp_offsets
[] = {
551 VOPARG_OFFSETOF(struct rump_vop_poll_args
,a_vp
),
554 const struct vnodeop_desc rump_vop_poll_desc
= {
555 RUMP_VOP_POLL_DESCOFFSET
,
558 rump_vop_poll_vp_offsets
,
565 RUMP_VOP_POLL(struct vnode
*vp
,
570 struct rump_vop_poll_args a
;
571 a
.a_desc
= VDESC(rump_vop_poll
);
574 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
576 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
577 error
= (VCALL(vp
, VOFFSET(rump_vop_poll
), &a
));
578 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
583 const int rump_vop_kqfilter_vp_offsets
[] = {
584 VOPARG_OFFSETOF(struct rump_vop_kqfilter_args
,a_vp
),
587 const struct vnodeop_desc rump_vop_kqfilter_desc
= {
588 RUMP_VOP_KQFILTER_DESCOFFSET
,
591 rump_vop_kqfilter_vp_offsets
,
598 RUMP_VOP_KQFILTER(struct vnode
*vp
,
603 struct rump_vop_kqfilter_args a
;
604 a
.a_desc
= VDESC(rump_vop_kqfilter
);
607 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
609 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
610 error
= (VCALL(vp
, VOFFSET(rump_vop_kqfilter
), &a
));
611 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
616 const int rump_vop_revoke_vp_offsets
[] = {
617 VOPARG_OFFSETOF(struct rump_vop_revoke_args
,a_vp
),
620 const struct vnodeop_desc rump_vop_revoke_desc
= {
621 RUMP_VOP_REVOKE_DESCOFFSET
,
624 rump_vop_revoke_vp_offsets
,
631 RUMP_VOP_REVOKE(struct vnode
*vp
,
636 struct rump_vop_revoke_args a
;
637 a
.a_desc
= VDESC(rump_vop_revoke
);
640 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
642 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
643 error
= (VCALL(vp
, VOFFSET(rump_vop_revoke
), &a
));
644 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
649 const int rump_vop_mmap_vp_offsets
[] = {
650 VOPARG_OFFSETOF(struct rump_vop_mmap_args
,a_vp
),
653 const struct vnodeop_desc rump_vop_mmap_desc
= {
654 RUMP_VOP_MMAP_DESCOFFSET
,
657 rump_vop_mmap_vp_offsets
,
659 VOPARG_OFFSETOF(struct rump_vop_mmap_args
, a_cred
),
664 RUMP_VOP_MMAP(struct vnode
*vp
,
670 struct rump_vop_mmap_args a
;
671 a
.a_desc
= VDESC(rump_vop_mmap
);
675 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
677 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
678 error
= (VCALL(vp
, VOFFSET(rump_vop_mmap
), &a
));
679 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
684 const int rump_vop_fsync_vp_offsets
[] = {
685 VOPARG_OFFSETOF(struct rump_vop_fsync_args
,a_vp
),
688 const struct vnodeop_desc rump_vop_fsync_desc
= {
689 RUMP_VOP_FSYNC_DESCOFFSET
,
692 rump_vop_fsync_vp_offsets
,
694 VOPARG_OFFSETOF(struct rump_vop_fsync_args
, a_cred
),
699 RUMP_VOP_FSYNC(struct vnode
*vp
,
707 struct rump_vop_fsync_args a
;
708 a
.a_desc
= VDESC(rump_vop_fsync
);
714 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
716 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
717 error
= (VCALL(vp
, VOFFSET(rump_vop_fsync
), &a
));
718 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
723 const int rump_vop_seek_vp_offsets
[] = {
724 VOPARG_OFFSETOF(struct rump_vop_seek_args
,a_vp
),
727 const struct vnodeop_desc rump_vop_seek_desc
= {
728 RUMP_VOP_SEEK_DESCOFFSET
,
731 rump_vop_seek_vp_offsets
,
733 VOPARG_OFFSETOF(struct rump_vop_seek_args
, a_cred
),
738 RUMP_VOP_SEEK(struct vnode
*vp
,
745 struct rump_vop_seek_args a
;
746 a
.a_desc
= VDESC(rump_vop_seek
);
751 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
753 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
754 error
= (VCALL(vp
, VOFFSET(rump_vop_seek
), &a
));
755 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
760 const int rump_vop_remove_vp_offsets
[] = {
761 VOPARG_OFFSETOF(struct rump_vop_remove_args
,a_dvp
),
762 VOPARG_OFFSETOF(struct rump_vop_remove_args
,a_vp
),
765 const struct vnodeop_desc rump_vop_remove_desc
= {
766 RUMP_VOP_REMOVE_DESCOFFSET
,
768 0 | VDESC_VP0_WILLPUT
| VDESC_VP1_WILLPUT
,
769 rump_vop_remove_vp_offsets
,
772 VOPARG_OFFSETOF(struct rump_vop_remove_args
, a_cnp
),
776 RUMP_VOP_REMOVE(struct vnode
*dvp
,
778 struct componentname
*cnp
)
782 struct rump_vop_remove_args a
;
783 a
.a_desc
= VDESC(rump_vop_remove
);
787 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
789 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
790 error
= (VCALL(dvp
, VOFFSET(rump_vop_remove
), &a
));
791 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
796 const int rump_vop_link_vp_offsets
[] = {
797 VOPARG_OFFSETOF(struct rump_vop_link_args
,a_dvp
),
798 VOPARG_OFFSETOF(struct rump_vop_link_args
,a_vp
),
801 const struct vnodeop_desc rump_vop_link_desc
= {
802 RUMP_VOP_LINK_DESCOFFSET
,
804 0 | VDESC_VP0_WILLPUT
,
805 rump_vop_link_vp_offsets
,
808 VOPARG_OFFSETOF(struct rump_vop_link_args
, a_cnp
),
812 RUMP_VOP_LINK(struct vnode
*dvp
,
814 struct componentname
*cnp
)
818 struct rump_vop_link_args a
;
819 a
.a_desc
= VDESC(rump_vop_link
);
823 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
825 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
826 error
= (VCALL(dvp
, VOFFSET(rump_vop_link
), &a
));
827 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
832 const int rump_vop_rename_vp_offsets
[] = {
833 VOPARG_OFFSETOF(struct rump_vop_rename_args
,a_fdvp
),
834 VOPARG_OFFSETOF(struct rump_vop_rename_args
,a_fvp
),
835 VOPARG_OFFSETOF(struct rump_vop_rename_args
,a_tdvp
),
836 VOPARG_OFFSETOF(struct rump_vop_rename_args
,a_tvp
),
839 const struct vnodeop_desc rump_vop_rename_desc
= {
840 RUMP_VOP_RENAME_DESCOFFSET
,
842 0 | VDESC_VP0_WILLRELE
| VDESC_VP1_WILLRELE
| VDESC_VP2_WILLPUT
| VDESC_VP3_WILLPUT
,
843 rump_vop_rename_vp_offsets
,
846 VOPARG_OFFSETOF(struct rump_vop_rename_args
, a_fcnp
),
850 RUMP_VOP_RENAME(struct vnode
*fdvp
,
852 struct componentname
*fcnp
,
855 struct componentname
*tcnp
)
859 struct rump_vop_rename_args a
;
860 a
.a_desc
= VDESC(rump_vop_rename
);
867 mpsafe
= (fdvp
->v_vflag
& VV_MPSAFE
);
869 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
870 error
= (VCALL(fdvp
, VOFFSET(rump_vop_rename
), &a
));
871 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
876 const int rump_vop_mkdir_vp_offsets
[] = {
877 VOPARG_OFFSETOF(struct rump_vop_mkdir_args
,a_dvp
),
880 const struct vnodeop_desc rump_vop_mkdir_desc
= {
881 RUMP_VOP_MKDIR_DESCOFFSET
,
883 0 | VDESC_VP0_WILLPUT
,
884 rump_vop_mkdir_vp_offsets
,
885 VOPARG_OFFSETOF(struct rump_vop_mkdir_args
, a_vpp
),
887 VOPARG_OFFSETOF(struct rump_vop_mkdir_args
, a_cnp
),
891 RUMP_VOP_MKDIR(struct vnode
*dvp
,
893 struct componentname
*cnp
,
898 struct rump_vop_mkdir_args a
;
899 a
.a_desc
= VDESC(rump_vop_mkdir
);
904 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
906 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
907 error
= (VCALL(dvp
, VOFFSET(rump_vop_mkdir
), &a
));
908 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
912 KASSERT((*vpp
)->v_size
!= VSIZENOTSET
913 && (*vpp
)->v_writesize
!= VSIZENOTSET
);
914 #endif /* DIAGNOSTIC */
918 const int rump_vop_rmdir_vp_offsets
[] = {
919 VOPARG_OFFSETOF(struct rump_vop_rmdir_args
,a_dvp
),
920 VOPARG_OFFSETOF(struct rump_vop_rmdir_args
,a_vp
),
923 const struct vnodeop_desc rump_vop_rmdir_desc
= {
924 RUMP_VOP_RMDIR_DESCOFFSET
,
926 0 | VDESC_VP0_WILLPUT
| VDESC_VP1_WILLPUT
,
927 rump_vop_rmdir_vp_offsets
,
930 VOPARG_OFFSETOF(struct rump_vop_rmdir_args
, a_cnp
),
934 RUMP_VOP_RMDIR(struct vnode
*dvp
,
936 struct componentname
*cnp
)
940 struct rump_vop_rmdir_args a
;
941 a
.a_desc
= VDESC(rump_vop_rmdir
);
945 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
947 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
948 error
= (VCALL(dvp
, VOFFSET(rump_vop_rmdir
), &a
));
949 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
954 const int rump_vop_symlink_vp_offsets
[] = {
955 VOPARG_OFFSETOF(struct rump_vop_symlink_args
,a_dvp
),
958 const struct vnodeop_desc rump_vop_symlink_desc
= {
959 RUMP_VOP_SYMLINK_DESCOFFSET
,
961 0 | VDESC_VP0_WILLPUT
,
962 rump_vop_symlink_vp_offsets
,
963 VOPARG_OFFSETOF(struct rump_vop_symlink_args
, a_vpp
),
965 VOPARG_OFFSETOF(struct rump_vop_symlink_args
, a_cnp
),
969 RUMP_VOP_SYMLINK(struct vnode
*dvp
,
971 struct componentname
*cnp
,
977 struct rump_vop_symlink_args a
;
978 a
.a_desc
= VDESC(rump_vop_symlink
);
984 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
986 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
987 error
= (VCALL(dvp
, VOFFSET(rump_vop_symlink
), &a
));
988 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
992 KASSERT((*vpp
)->v_size
!= VSIZENOTSET
993 && (*vpp
)->v_writesize
!= VSIZENOTSET
);
994 #endif /* DIAGNOSTIC */
998 const int rump_vop_readdir_vp_offsets
[] = {
999 VOPARG_OFFSETOF(struct rump_vop_readdir_args
,a_vp
),
1002 const struct vnodeop_desc rump_vop_readdir_desc
= {
1003 RUMP_VOP_READDIR_DESCOFFSET
,
1006 rump_vop_readdir_vp_offsets
,
1008 VOPARG_OFFSETOF(struct rump_vop_readdir_args
, a_cred
),
1013 RUMP_VOP_READDIR(struct vnode
*vp
,
1022 struct rump_vop_readdir_args a
;
1023 a
.a_desc
= VDESC(rump_vop_readdir
);
1027 a
.a_eofflag
= eofflag
;
1028 a
.a_cookies
= cookies
;
1029 a
.a_ncookies
= ncookies
;
1030 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1032 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1033 error
= (VCALL(vp
, VOFFSET(rump_vop_readdir
), &a
));
1034 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1039 const int rump_vop_readlink_vp_offsets
[] = {
1040 VOPARG_OFFSETOF(struct rump_vop_readlink_args
,a_vp
),
1043 const struct vnodeop_desc rump_vop_readlink_desc
= {
1044 RUMP_VOP_READLINK_DESCOFFSET
,
1045 "rump_vop_readlink",
1047 rump_vop_readlink_vp_offsets
,
1049 VOPARG_OFFSETOF(struct rump_vop_readlink_args
, a_cred
),
1054 RUMP_VOP_READLINK(struct vnode
*vp
,
1060 struct rump_vop_readlink_args a
;
1061 a
.a_desc
= VDESC(rump_vop_readlink
);
1065 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1067 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1068 error
= (VCALL(vp
, VOFFSET(rump_vop_readlink
), &a
));
1069 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1074 const int rump_vop_abortop_vp_offsets
[] = {
1075 VOPARG_OFFSETOF(struct rump_vop_abortop_args
,a_dvp
),
1078 const struct vnodeop_desc rump_vop_abortop_desc
= {
1079 RUMP_VOP_ABORTOP_DESCOFFSET
,
1082 rump_vop_abortop_vp_offsets
,
1085 VOPARG_OFFSETOF(struct rump_vop_abortop_args
, a_cnp
),
1089 RUMP_VOP_ABORTOP(struct vnode
*dvp
,
1090 struct componentname
*cnp
)
1094 struct rump_vop_abortop_args a
;
1095 a
.a_desc
= VDESC(rump_vop_abortop
);
1098 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
1100 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1101 error
= (VCALL(dvp
, VOFFSET(rump_vop_abortop
), &a
));
1102 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1107 const int rump_vop_inactive_vp_offsets
[] = {
1108 VOPARG_OFFSETOF(struct rump_vop_inactive_args
,a_vp
),
1111 const struct vnodeop_desc rump_vop_inactive_desc
= {
1112 RUMP_VOP_INACTIVE_DESCOFFSET
,
1113 "rump_vop_inactive",
1114 0 | VDESC_VP0_WILLUNLOCK
,
1115 rump_vop_inactive_vp_offsets
,
1122 RUMP_VOP_INACTIVE(struct vnode
*vp
,
1127 struct rump_vop_inactive_args a
;
1128 a
.a_desc
= VDESC(rump_vop_inactive
);
1130 a
.a_recycle
= recycle
;
1131 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1133 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1134 error
= (VCALL(vp
, VOFFSET(rump_vop_inactive
), &a
));
1135 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1140 const int rump_vop_reclaim_vp_offsets
[] = {
1141 VOPARG_OFFSETOF(struct rump_vop_reclaim_args
,a_vp
),
1144 const struct vnodeop_desc rump_vop_reclaim_desc
= {
1145 RUMP_VOP_RECLAIM_DESCOFFSET
,
1148 rump_vop_reclaim_vp_offsets
,
1155 RUMP_VOP_RECLAIM(struct vnode
*vp
)
1159 struct rump_vop_reclaim_args a
;
1160 a
.a_desc
= VDESC(rump_vop_reclaim
);
1162 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1164 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1165 error
= (VCALL(vp
, VOFFSET(rump_vop_reclaim
), &a
));
1166 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1171 const int rump_vop_lock_vp_offsets
[] = {
1172 VOPARG_OFFSETOF(struct rump_vop_lock_args
,a_vp
),
1175 const struct vnodeop_desc rump_vop_lock_desc
= {
1176 RUMP_VOP_LOCK_DESCOFFSET
,
1179 rump_vop_lock_vp_offsets
,
1186 RUMP_VOP_LOCK(struct vnode
*vp
,
1191 struct rump_vop_lock_args a
;
1192 a
.a_desc
= VDESC(rump_vop_lock
);
1195 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1197 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1198 error
= (VCALL(vp
, VOFFSET(rump_vop_lock
), &a
));
1199 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1204 const int rump_vop_unlock_vp_offsets
[] = {
1205 VOPARG_OFFSETOF(struct rump_vop_unlock_args
,a_vp
),
1208 const struct vnodeop_desc rump_vop_unlock_desc
= {
1209 RUMP_VOP_UNLOCK_DESCOFFSET
,
1212 rump_vop_unlock_vp_offsets
,
1219 RUMP_VOP_UNLOCK(struct vnode
*vp
,
1224 struct rump_vop_unlock_args a
;
1225 a
.a_desc
= VDESC(rump_vop_unlock
);
1228 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1230 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1231 error
= (VCALL(vp
, VOFFSET(rump_vop_unlock
), &a
));
1232 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1237 const int rump_vop_bmap_vp_offsets
[] = {
1238 VOPARG_OFFSETOF(struct rump_vop_bmap_args
,a_vp
),
1241 const struct vnodeop_desc rump_vop_bmap_desc
= {
1242 RUMP_VOP_BMAP_DESCOFFSET
,
1245 rump_vop_bmap_vp_offsets
,
1246 VOPARG_OFFSETOF(struct rump_vop_bmap_args
, a_vpp
),
1252 RUMP_VOP_BMAP(struct vnode
*vp
,
1260 struct rump_vop_bmap_args a
;
1261 a
.a_desc
= VDESC(rump_vop_bmap
);
1267 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1269 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1270 error
= (VCALL(vp
, VOFFSET(rump_vop_bmap
), &a
));
1271 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1276 const int rump_vop_strategy_vp_offsets
[] = {
1277 VOPARG_OFFSETOF(struct rump_vop_strategy_args
,a_vp
),
1280 const struct vnodeop_desc rump_vop_strategy_desc
= {
1281 RUMP_VOP_STRATEGY_DESCOFFSET
,
1282 "rump_vop_strategy",
1284 rump_vop_strategy_vp_offsets
,
1291 RUMP_VOP_STRATEGY(struct vnode
*vp
,
1296 struct rump_vop_strategy_args a
;
1297 a
.a_desc
= VDESC(rump_vop_strategy
);
1300 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1302 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1303 error
= (VCALL(vp
, VOFFSET(rump_vop_strategy
), &a
));
1304 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1309 const int rump_vop_print_vp_offsets
[] = {
1310 VOPARG_OFFSETOF(struct rump_vop_print_args
,a_vp
),
1313 const struct vnodeop_desc rump_vop_print_desc
= {
1314 RUMP_VOP_PRINT_DESCOFFSET
,
1317 rump_vop_print_vp_offsets
,
1324 RUMP_VOP_PRINT(struct vnode
*vp
)
1328 struct rump_vop_print_args a
;
1329 a
.a_desc
= VDESC(rump_vop_print
);
1331 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1333 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1334 error
= (VCALL(vp
, VOFFSET(rump_vop_print
), &a
));
1335 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1340 const int rump_vop_islocked_vp_offsets
[] = {
1341 VOPARG_OFFSETOF(struct rump_vop_islocked_args
,a_vp
),
1344 const struct vnodeop_desc rump_vop_islocked_desc
= {
1345 RUMP_VOP_ISLOCKED_DESCOFFSET
,
1346 "rump_vop_islocked",
1348 rump_vop_islocked_vp_offsets
,
1355 RUMP_VOP_ISLOCKED(struct vnode
*vp
)
1359 struct rump_vop_islocked_args a
;
1360 a
.a_desc
= VDESC(rump_vop_islocked
);
1362 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1364 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1365 error
= (VCALL(vp
, VOFFSET(rump_vop_islocked
), &a
));
1366 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1371 const int rump_vop_pathconf_vp_offsets
[] = {
1372 VOPARG_OFFSETOF(struct rump_vop_pathconf_args
,a_vp
),
1375 const struct vnodeop_desc rump_vop_pathconf_desc
= {
1376 RUMP_VOP_PATHCONF_DESCOFFSET
,
1377 "rump_vop_pathconf",
1379 rump_vop_pathconf_vp_offsets
,
1386 RUMP_VOP_PATHCONF(struct vnode
*vp
,
1392 struct rump_vop_pathconf_args a
;
1393 a
.a_desc
= VDESC(rump_vop_pathconf
);
1396 a
.a_retval
= retval
;
1397 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1399 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1400 error
= (VCALL(vp
, VOFFSET(rump_vop_pathconf
), &a
));
1401 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1406 const int rump_vop_advlock_vp_offsets
[] = {
1407 VOPARG_OFFSETOF(struct rump_vop_advlock_args
,a_vp
),
1410 const struct vnodeop_desc rump_vop_advlock_desc
= {
1411 RUMP_VOP_ADVLOCK_DESCOFFSET
,
1414 rump_vop_advlock_vp_offsets
,
1421 RUMP_VOP_ADVLOCK(struct vnode
*vp
,
1429 struct rump_vop_advlock_args a
;
1430 a
.a_desc
= VDESC(rump_vop_advlock
);
1436 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1438 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1439 error
= (VCALL(vp
, VOFFSET(rump_vop_advlock
), &a
));
1440 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1445 const int rump_vop_whiteout_vp_offsets
[] = {
1446 VOPARG_OFFSETOF(struct rump_vop_whiteout_args
,a_dvp
),
1449 const struct vnodeop_desc rump_vop_whiteout_desc
= {
1450 RUMP_VOP_WHITEOUT_DESCOFFSET
,
1451 "rump_vop_whiteout",
1453 rump_vop_whiteout_vp_offsets
,
1456 VOPARG_OFFSETOF(struct rump_vop_whiteout_args
, a_cnp
),
1460 RUMP_VOP_WHITEOUT(struct vnode
*dvp
,
1461 struct componentname
*cnp
,
1466 struct rump_vop_whiteout_args a
;
1467 a
.a_desc
= VDESC(rump_vop_whiteout
);
1471 mpsafe
= (dvp
->v_vflag
& VV_MPSAFE
);
1473 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1474 error
= (VCALL(dvp
, VOFFSET(rump_vop_whiteout
), &a
));
1475 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1480 const int rump_vop_getpages_vp_offsets
[] = {
1481 VOPARG_OFFSETOF(struct rump_vop_getpages_args
,a_vp
),
1484 const struct vnodeop_desc rump_vop_getpages_desc
= {
1485 RUMP_VOP_GETPAGES_DESCOFFSET
,
1486 "rump_vop_getpages",
1488 rump_vop_getpages_vp_offsets
,
1495 RUMP_VOP_GETPAGES(struct vnode
*vp
,
1506 struct rump_vop_getpages_args a
;
1507 a
.a_desc
= VDESC(rump_vop_getpages
);
1509 a
.a_offset
= offset
;
1512 a
.a_centeridx
= centeridx
;
1513 a
.a_access_type
= access_type
;
1514 a
.a_advice
= advice
;
1516 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1518 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1519 error
= (VCALL(vp
, VOFFSET(rump_vop_getpages
), &a
));
1520 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1525 const int rump_vop_putpages_vp_offsets
[] = {
1526 VOPARG_OFFSETOF(struct rump_vop_putpages_args
,a_vp
),
1529 const struct vnodeop_desc rump_vop_putpages_desc
= {
1530 RUMP_VOP_PUTPAGES_DESCOFFSET
,
1531 "rump_vop_putpages",
1533 rump_vop_putpages_vp_offsets
,
1540 RUMP_VOP_PUTPAGES(struct vnode
*vp
,
1547 struct rump_vop_putpages_args a
;
1548 a
.a_desc
= VDESC(rump_vop_putpages
);
1553 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1555 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1556 error
= (VCALL(vp
, VOFFSET(rump_vop_putpages
), &a
));
1557 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1562 const int rump_vop_closeextattr_vp_offsets
[] = {
1563 VOPARG_OFFSETOF(struct rump_vop_closeextattr_args
,a_vp
),
1566 const struct vnodeop_desc rump_vop_closeextattr_desc
= {
1567 RUMP_VOP_CLOSEEXTATTR_DESCOFFSET
,
1568 "rump_vop_closeextattr",
1570 rump_vop_closeextattr_vp_offsets
,
1572 VOPARG_OFFSETOF(struct rump_vop_closeextattr_args
, a_cred
),
1577 RUMP_VOP_CLOSEEXTATTR(struct vnode
*vp
,
1583 struct rump_vop_closeextattr_args a
;
1584 a
.a_desc
= VDESC(rump_vop_closeextattr
);
1586 a
.a_commit
= commit
;
1588 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1590 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1591 error
= (VCALL(vp
, VOFFSET(rump_vop_closeextattr
), &a
));
1592 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1597 const int rump_vop_getextattr_vp_offsets
[] = {
1598 VOPARG_OFFSETOF(struct rump_vop_getextattr_args
,a_vp
),
1601 const struct vnodeop_desc rump_vop_getextattr_desc
= {
1602 RUMP_VOP_GETEXTATTR_DESCOFFSET
,
1603 "rump_vop_getextattr",
1605 rump_vop_getextattr_vp_offsets
,
1607 VOPARG_OFFSETOF(struct rump_vop_getextattr_args
, a_cred
),
1612 RUMP_VOP_GETEXTATTR(struct vnode
*vp
,
1621 struct rump_vop_getextattr_args a
;
1622 a
.a_desc
= VDESC(rump_vop_getextattr
);
1624 a
.a_attrnamespace
= attrnamespace
;
1629 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1631 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1632 error
= (VCALL(vp
, VOFFSET(rump_vop_getextattr
), &a
));
1633 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1638 const int rump_vop_listextattr_vp_offsets
[] = {
1639 VOPARG_OFFSETOF(struct rump_vop_listextattr_args
,a_vp
),
1642 const struct vnodeop_desc rump_vop_listextattr_desc
= {
1643 RUMP_VOP_LISTEXTATTR_DESCOFFSET
,
1644 "rump_vop_listextattr",
1646 rump_vop_listextattr_vp_offsets
,
1648 VOPARG_OFFSETOF(struct rump_vop_listextattr_args
, a_cred
),
1653 RUMP_VOP_LISTEXTATTR(struct vnode
*vp
,
1661 struct rump_vop_listextattr_args a
;
1662 a
.a_desc
= VDESC(rump_vop_listextattr
);
1664 a
.a_attrnamespace
= attrnamespace
;
1668 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1670 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1671 error
= (VCALL(vp
, VOFFSET(rump_vop_listextattr
), &a
));
1672 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1677 const int rump_vop_openextattr_vp_offsets
[] = {
1678 VOPARG_OFFSETOF(struct rump_vop_openextattr_args
,a_vp
),
1681 const struct vnodeop_desc rump_vop_openextattr_desc
= {
1682 RUMP_VOP_OPENEXTATTR_DESCOFFSET
,
1683 "rump_vop_openextattr",
1685 rump_vop_openextattr_vp_offsets
,
1687 VOPARG_OFFSETOF(struct rump_vop_openextattr_args
, a_cred
),
1692 RUMP_VOP_OPENEXTATTR(struct vnode
*vp
,
1697 struct rump_vop_openextattr_args a
;
1698 a
.a_desc
= VDESC(rump_vop_openextattr
);
1701 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1703 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1704 error
= (VCALL(vp
, VOFFSET(rump_vop_openextattr
), &a
));
1705 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1710 const int rump_vop_deleteextattr_vp_offsets
[] = {
1711 VOPARG_OFFSETOF(struct rump_vop_deleteextattr_args
,a_vp
),
1714 const struct vnodeop_desc rump_vop_deleteextattr_desc
= {
1715 RUMP_VOP_DELETEEXTATTR_DESCOFFSET
,
1716 "rump_vop_deleteextattr",
1718 rump_vop_deleteextattr_vp_offsets
,
1720 VOPARG_OFFSETOF(struct rump_vop_deleteextattr_args
, a_cred
),
1725 RUMP_VOP_DELETEEXTATTR(struct vnode
*vp
,
1732 struct rump_vop_deleteextattr_args a
;
1733 a
.a_desc
= VDESC(rump_vop_deleteextattr
);
1735 a
.a_attrnamespace
= attrnamespace
;
1738 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1740 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1741 error
= (VCALL(vp
, VOFFSET(rump_vop_deleteextattr
), &a
));
1742 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1747 const int rump_vop_setextattr_vp_offsets
[] = {
1748 VOPARG_OFFSETOF(struct rump_vop_setextattr_args
,a_vp
),
1751 const struct vnodeop_desc rump_vop_setextattr_desc
= {
1752 RUMP_VOP_SETEXTATTR_DESCOFFSET
,
1753 "rump_vop_setextattr",
1755 rump_vop_setextattr_vp_offsets
,
1757 VOPARG_OFFSETOF(struct rump_vop_setextattr_args
, a_cred
),
1762 RUMP_VOP_SETEXTATTR(struct vnode
*vp
,
1770 struct rump_vop_setextattr_args a
;
1771 a
.a_desc
= VDESC(rump_vop_setextattr
);
1773 a
.a_attrnamespace
= attrnamespace
;
1777 mpsafe
= (vp
->v_vflag
& VV_MPSAFE
);
1779 if (!mpsafe
) { KERNEL_LOCK(1, curlwp
); }
1780 error
= (VCALL(vp
, VOFFSET(rump_vop_setextattr
), &a
));
1781 if (!mpsafe
) { KERNEL_UNLOCK_ONE(curlwp
); }
1786 /* End of special cases. */
1788 const struct vnodeop_desc
* const rump_vfs_op_descs
[] = {
1789 &rump_vop_default_desc
, /* MUST BE FIRST */
1790 &rump_vop_bwrite_desc
, /* XXX: SPECIAL CASE */
1792 &rump_vop_lookup_desc
,
1793 &rump_vop_create_desc
,
1794 &rump_vop_mknod_desc
,
1795 &rump_vop_open_desc
,
1796 &rump_vop_close_desc
,
1797 &rump_vop_access_desc
,
1798 &rump_vop_getattr_desc
,
1799 &rump_vop_setattr_desc
,
1800 &rump_vop_read_desc
,
1801 &rump_vop_write_desc
,
1802 &rump_vop_ioctl_desc
,
1803 &rump_vop_fcntl_desc
,
1804 &rump_vop_poll_desc
,
1805 &rump_vop_kqfilter_desc
,
1806 &rump_vop_revoke_desc
,
1807 &rump_vop_mmap_desc
,
1808 &rump_vop_fsync_desc
,
1809 &rump_vop_seek_desc
,
1810 &rump_vop_remove_desc
,
1811 &rump_vop_link_desc
,
1812 &rump_vop_rename_desc
,
1813 &rump_vop_mkdir_desc
,
1814 &rump_vop_rmdir_desc
,
1815 &rump_vop_symlink_desc
,
1816 &rump_vop_readdir_desc
,
1817 &rump_vop_readlink_desc
,
1818 &rump_vop_abortop_desc
,
1819 &rump_vop_inactive_desc
,
1820 &rump_vop_reclaim_desc
,
1821 &rump_vop_lock_desc
,
1822 &rump_vop_unlock_desc
,
1823 &rump_vop_bmap_desc
,
1824 &rump_vop_strategy_desc
,
1825 &rump_vop_print_desc
,
1826 &rump_vop_islocked_desc
,
1827 &rump_vop_pathconf_desc
,
1828 &rump_vop_advlock_desc
,
1829 &rump_vop_whiteout_desc
,
1830 &rump_vop_getpages_desc
,
1831 &rump_vop_putpages_desc
,
1832 &rump_vop_closeextattr_desc
,
1833 &rump_vop_getextattr_desc
,
1834 &rump_vop_listextattr_desc
,
1835 &rump_vop_openextattr_desc
,
1836 &rump_vop_deleteextattr_desc
,
1837 &rump_vop_setextattr_desc
,