Get rid of dfly/fbsd4/fbsd5 checks for the ntohl() return type. We are
[dragonfly.git] / sys / kern / vfs_vopops.c
CommitLineData
2d3e977e
MD
1/*
2 *
3 * Copyright (c) 2004 The DragonFly Project. All rights reserved.
4 *
5 * This code is derived from software contributed to The DragonFly Project
6 * by Matthew Dillon <dillon@backplane.com>
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 * 3. Neither the name of The DragonFly Project nor the names of its
19 * contributors may be used to endorse or promote products derived
20 * from this software without specific, prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
30 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
31 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
0961aa92 35 * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.2 2004/08/17 18:57:32 dillon Exp $
2d3e977e
MD
36 */
37
38#include <sys/param.h>
39#include <sys/systm.h>
40#include <sys/buf.h>
41#include <sys/conf.h>
42#include <sys/dirent.h>
43#include <sys/domain.h>
44#include <sys/eventhandler.h>
45#include <sys/fcntl.h>
46#include <sys/kernel.h>
47#include <sys/kthread.h>
48#include <sys/malloc.h>
49#include <sys/mbuf.h>
50#include <sys/mount.h>
51#include <sys/proc.h>
52#include <sys/namei.h>
53#include <sys/reboot.h>
54#include <sys/socket.h>
55#include <sys/stat.h>
56#include <sys/sysctl.h>
57#include <sys/syslog.h>
58#include <sys/vmmeter.h>
59#include <sys/vnode.h>
0961aa92 60#include <sys/vfsops.h>
2d3e977e
MD
61
62#include <machine/limits.h>
63
64#include <vm/vm.h>
65#include <vm/vm_object.h>
66#include <vm/vm_extern.h>
67#include <vm/vm_kern.h>
68#include <vm/pmap.h>
69#include <vm/vm_map.h>
70#include <vm/vm_page.h>
71#include <vm/vm_pager.h>
72#include <vm/vnode_pager.h>
73#include <vm/vm_zone.h>
74
75#include <sys/buf2.h>
76#include <sys/thread2.h>
77
78#define VOFFNAME(name) __CONCAT(__CONCAT(vop_,name),_vp_offsets)
79#define VDESCNAME(name) __CONCAT(__CONCAT(vop_,name),_desc)
80#define VARGSSTRUCT(name) struct __CONCAT(__CONCAT(vop_,name),_args)
81
82#define VNODEOP_DESC_INIT(name, flags, vpoffs, vpp, cred, proc, comp) \
83 struct vnodeop_desc VDESCNAME(name) = { \
84 __offsetof(struct vop_ops, __CONCAT(vop_, name)), \
85 #name, flags, vpoffs, vpp, cred, proc, comp }
86
87#define VNODEOP_DESC_INIT_SIMPLE(name) \
88 VNODEOP_DESC_INIT(name, 0, NULL, \
89 VDESC_NO_OFFSET, \
90 VDESC_NO_OFFSET, \
91 VDESC_NO_OFFSET, \
92 VDESC_NO_OFFSET)
93
94#define VNODEOP_DESC_INIT_VP(name) \
95 static int VOFFNAME(name)[] = { \
96 __offsetof(VARGSSTRUCT(name), a_vp), \
97 VDESC_NO_OFFSET }; \
98 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
99 VDESC_NO_OFFSET, \
100 VDESC_NO_OFFSET, \
101 VDESC_NO_OFFSET, \
102 VDESC_NO_OFFSET)
103
104#define VNODEOP_DESC_INIT_VP_VPP(name) \
105 static int VOFFNAME(name)[] = { \
106 __offsetof(VARGSSTRUCT(name), a_vp), \
107 VDESC_NO_OFFSET }; \
108 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
109 __offsetof(VARGSSTRUCT(name), a_vpp), \
110 VDESC_NO_OFFSET, \
111 VDESC_NO_OFFSET, \
112 VDESC_NO_OFFSET)
113
114#define VNODEOP_DESC_INIT_VP_CRED(name) \
115 static int VOFFNAME(name)[] = { \
116 __offsetof(VARGSSTRUCT(name), a_vp), \
117 VDESC_NO_OFFSET }; \
118 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
119 VDESC_NO_OFFSET, \
120 __offsetof(VARGSSTRUCT(name), a_cred), \
121 VDESC_NO_OFFSET, \
122 VDESC_NO_OFFSET)
123
124#define VNODEOP_DESC_INIT_DVP_VPP_CNP(name) \
125 static int VOFFNAME(name)[] = { \
126 __offsetof(VARGSSTRUCT(name), a_dvp), \
127 VDESC_NO_OFFSET }; \
128 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
129 __offsetof(VARGSSTRUCT(name), a_vpp), \
130 VDESC_NO_OFFSET, \
131 VDESC_NO_OFFSET, \
132 __offsetof(VARGSSTRUCT(name), a_cnp))
133
134#define VNODEOP_DESC_INIT_DVP_CNP(name) \
135 static int VOFFNAME(name)[] = { \
136 __offsetof(VARGSSTRUCT(name), a_dvp), \
137 VDESC_NO_OFFSET }; \
138 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
139 VDESC_NO_OFFSET, \
140 VDESC_NO_OFFSET, \
141 VDESC_NO_OFFSET, \
142 __offsetof(VARGSSTRUCT(name), a_cnp))
143
144#define VNODEOP_DESC_INIT_DVP_VP_CNP(name) \
145 static int VOFFNAME(name)[] = { \
146 __offsetof(VARGSSTRUCT(name), a_dvp), \
147 __offsetof(VARGSSTRUCT(name), a_vp), \
148 VDESC_NO_OFFSET }; \
149 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
150 VDESC_NO_OFFSET, \
151 VDESC_NO_OFFSET, \
152 VDESC_NO_OFFSET, \
153 __offsetof(VARGSSTRUCT(name), a_cnp))
154
155#define VNODEOP_DESC_INIT_TDVP_VP_CNP(name) \
156 static int VOFFNAME(name)[] = { \
157 __offsetof(VARGSSTRUCT(name), a_tdvp), \
158 __offsetof(VARGSSTRUCT(name), a_vp), \
159 VDESC_NO_OFFSET }; \
160 VNODEOP_DESC_INIT(name, 0, VOFFNAME(name), \
161 VDESC_NO_OFFSET, \
162 VDESC_NO_OFFSET, \
163 VDESC_NO_OFFSET, \
164 __offsetof(VARGSSTRUCT(name), a_cnp))
165
166VNODEOP_DESC_INIT_SIMPLE(default);
167VNODEOP_DESC_INIT_VP(islocked);
168VNODEOP_DESC_INIT_DVP_VPP_CNP(lookup);
169VNODEOP_DESC_INIT_DVP_VPP_CNP(cachedlookup);
170VNODEOP_DESC_INIT_DVP_VPP_CNP(create);
171VNODEOP_DESC_INIT_DVP_CNP(whiteout);
172VNODEOP_DESC_INIT_DVP_VPP_CNP(mknod);
173VNODEOP_DESC_INIT_VP_CRED(open);
174VNODEOP_DESC_INIT_VP(close);
175VNODEOP_DESC_INIT_VP_CRED(access);
176VNODEOP_DESC_INIT_VP(getattr);
177VNODEOP_DESC_INIT_VP_CRED(setattr);
178VNODEOP_DESC_INIT_VP_CRED(read);
179VNODEOP_DESC_INIT_VP_CRED(write);
180VNODEOP_DESC_INIT_VP_CRED(lease);
181VNODEOP_DESC_INIT_VP_CRED(ioctl);
182VNODEOP_DESC_INIT_VP_CRED(poll);
183VNODEOP_DESC_INIT_VP(kqfilter);
184VNODEOP_DESC_INIT_VP(revoke);
185VNODEOP_DESC_INIT_VP_CRED(mmap);
186VNODEOP_DESC_INIT_VP(fsync);
187VNODEOP_DESC_INIT_DVP_VP_CNP(remove);
188VNODEOP_DESC_INIT_TDVP_VP_CNP(link);
189
190static int VOFFNAME(rename)[] = {
191 __offsetof(VARGSSTRUCT(rename), a_fdvp),
192 __offsetof(VARGSSTRUCT(rename), a_fvp),
193 __offsetof(VARGSSTRUCT(rename), a_tdvp),
194 __offsetof(VARGSSTRUCT(rename), a_tvp),
195 VDESC_NO_OFFSET
196};
197VNODEOP_DESC_INIT(rename,
198 VDESC_VP0_WILLRELE|VDESC_VP1_WILLRELE|
199 VDESC_VP2_WILLRELE|VDESC_VP3_WILLRELE,
200 VOFFNAME(rename),
201 VDESC_NO_OFFSET,
202 VDESC_NO_OFFSET,
203 VDESC_NO_OFFSET,
204 __offsetof(VARGSSTRUCT(rename), a_fcnp));
205VNODEOP_DESC_INIT_DVP_VPP_CNP(mkdir);
206VNODEOP_DESC_INIT_DVP_VP_CNP(rmdir);
207VNODEOP_DESC_INIT_DVP_VPP_CNP(symlink);
208VNODEOP_DESC_INIT_VP_CRED(readdir);
209VNODEOP_DESC_INIT_VP_CRED(readlink);
210VNODEOP_DESC_INIT_VP(inactive);
211VNODEOP_DESC_INIT_VP(reclaim);
212VNODEOP_DESC_INIT_VP(lock);
213VNODEOP_DESC_INIT_VP(unlock);
214VNODEOP_DESC_INIT_VP_VPP(bmap);
215VNODEOP_DESC_INIT_VP(strategy);
216VNODEOP_DESC_INIT_VP(print);
217VNODEOP_DESC_INIT_VP(pathconf);
218VNODEOP_DESC_INIT_VP(advlock);
219VNODEOP_DESC_INIT_VP_CRED(balloc);
220VNODEOP_DESC_INIT_VP(reallocblks);
221VNODEOP_DESC_INIT_VP(getpages);
222VNODEOP_DESC_INIT_VP(putpages);
223VNODEOP_DESC_INIT_VP(freeblks);
224VNODEOP_DESC_INIT_VP(bwrite);
225VNODEOP_DESC_INIT_VP_CRED(getacl);
226VNODEOP_DESC_INIT_VP_CRED(setacl);
227VNODEOP_DESC_INIT_VP_CRED(aclcheck);
228VNODEOP_DESC_INIT_VP_CRED(getextattr);
229VNODEOP_DESC_INIT_VP_CRED(setextattr);
230VNODEOP_DESC_INIT_VP(createvobject);
231VNODEOP_DESC_INIT_VP(destroyvobject);
232VNODEOP_DESC_INIT_VP(getvobject);
233
0961aa92
MD
234/************************************************************************
235 * PRIMARY HIGH LEVEL VNODE OPERATIONS CALLS *
236 ************************************************************************
237 *
238 * These procedures are called directly from the kernel and/or fileops
239 * code to perform file/device operations on the system.
240 */
241
2d3e977e 242int
0961aa92 243vop_islocked(struct vop_ops *ops, struct vnode *vp, struct thread *td)
2d3e977e
MD
244{
245 struct vop_islocked_args ap;
246
247 ap.a_head.a_desc = &vop_islocked_desc;
0961aa92 248 ap.a_head.a_ops = ops;
2d3e977e
MD
249 ap.a_vp = vp;
250 ap.a_td = td;
0961aa92 251 return(ops->vop_islocked(&ap));
2d3e977e
MD
252}
253
254int
0961aa92
MD
255vop_lookup(struct vop_ops *ops, struct vnode *dvp,
256 struct namecache *par, struct vnode **vpp,
257 struct namecache **ncpp, struct componentname *cnp)
2d3e977e
MD
258{
259 struct vop_lookup_args ap;
260
261 ap.a_head.a_desc = &vop_lookup_desc;
0961aa92 262 ap.a_head.a_ops = ops;
2d3e977e
MD
263 ap.a_dvp = dvp;
264 ap.a_par = par;
265 ap.a_vpp = vpp;
266 ap.a_ncpp = ncpp;
267 ap.a_cnp = cnp;
0961aa92 268 return(ops->vop_lookup(&ap));
2d3e977e
MD
269}
270
271int
0961aa92
MD
272vop_cachedlookup(struct vop_ops *ops, struct vnode *dvp,
273 struct namecache *par, struct vnode **vpp,
274 struct namecache **ncpp, struct componentname *cnp)
2d3e977e
MD
275{
276 struct vop_cachedlookup_args ap;
277
278 ap.a_head.a_desc = &vop_cachedlookup_desc;
0961aa92 279 ap.a_head.a_ops = ops;
2d3e977e
MD
280 ap.a_dvp = dvp;
281 ap.a_par = par;
282 ap.a_vpp = vpp;
283 ap.a_ncpp = ncpp;
284 ap.a_cnp = cnp;
0961aa92 285 return(ops->vop_cachedlookup(&ap));
2d3e977e
MD
286}
287
288int
0961aa92
MD
289vop_create(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
290 struct vnode **vpp, struct componentname *cnp, struct vattr *vap)
2d3e977e
MD
291{
292 struct vop_create_args ap;
293
294 ap.a_head.a_desc = &vop_create_desc;
0961aa92 295 ap.a_head.a_ops = ops;
2d3e977e
MD
296 ap.a_dvp = dvp;
297 ap.a_par = par;
298 ap.a_vpp = vpp;
299 ap.a_cnp = cnp;
300 ap.a_vap = vap;
0961aa92 301 return(ops->vop_create(&ap));
2d3e977e
MD
302}
303
304int
0961aa92
MD
305vop_whiteout(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
306 struct componentname *cnp, int flags)
2d3e977e
MD
307{
308 struct vop_whiteout_args ap;
309
310 ap.a_head.a_desc = &vop_whiteout_desc;
0961aa92 311 ap.a_head.a_ops = ops;
2d3e977e
MD
312 ap.a_dvp = dvp;
313 ap.a_par = par;
314 ap.a_cnp = cnp;
315 ap.a_flags = flags;
0961aa92 316 return(ops->vop_whiteout(&ap));
2d3e977e
MD
317}
318
319int
0961aa92
MD
320vop_mknod(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
321 struct vnode **vpp, struct componentname *cnp, struct vattr *vap)
2d3e977e
MD
322{
323 struct vop_mknod_args ap;
324
325 ap.a_head.a_desc = &vop_mknod_desc;
0961aa92 326 ap.a_head.a_ops = ops;
2d3e977e
MD
327 ap.a_dvp = dvp;
328 ap.a_par = par;
329 ap.a_vpp = vpp;
330 ap.a_cnp = cnp;
331 ap.a_vap = vap;
0961aa92 332 return(ops->vop_mknod(&ap));
2d3e977e
MD
333}
334
335int
0961aa92
MD
336vop_open(struct vop_ops *ops, struct vnode *vp, int mode, struct ucred *cred,
337 struct thread *td)
2d3e977e
MD
338{
339 struct vop_open_args ap;
340
341 ap.a_head.a_desc = &vop_open_desc;
0961aa92 342 ap.a_head.a_ops = ops;
2d3e977e
MD
343 ap.a_vp = vp;
344 ap.a_mode = mode;
345 ap.a_cred = cred;
346 ap.a_td = td;
0961aa92 347 return(ops->vop_open(&ap));
2d3e977e
MD
348}
349
350int
0961aa92 351vop_close(struct vop_ops *ops, struct vnode *vp, int fflag, struct thread *td)
2d3e977e
MD
352{
353 struct vop_close_args ap;
354
355 ap.a_head.a_desc = &vop_close_desc;
0961aa92 356 ap.a_head.a_ops = ops;
2d3e977e
MD
357 ap.a_vp = vp;
358 ap.a_fflag = fflag;
359 ap.a_td = td;
0961aa92 360 return(ops->vop_close(&ap));
2d3e977e
MD
361}
362
363int
0961aa92
MD
364vop_access(struct vop_ops *ops, struct vnode *vp, int mode, struct ucred *cred,
365 struct thread *td)
2d3e977e
MD
366{
367 struct vop_access_args ap;
368
369 ap.a_head.a_desc = &vop_access_desc;
0961aa92 370 ap.a_head.a_ops = ops;
2d3e977e
MD
371 ap.a_vp = vp;
372 ap.a_mode = mode;
373 ap.a_cred = cred;
374 ap.a_td = td;
0961aa92 375 return(ops->vop_access(&ap));
2d3e977e
MD
376}
377
378int
0961aa92
MD
379vop_getattr(struct vop_ops *ops, struct vnode *vp, struct vattr *vap,
380 struct thread *td)
2d3e977e
MD
381{
382 struct vop_getattr_args ap;
383
384 ap.a_head.a_desc = &vop_getattr_desc;
0961aa92 385 ap.a_head.a_ops = ops;
2d3e977e
MD
386 ap.a_vp = vp;
387 ap.a_vap = vap;
388 ap.a_td = td;
0961aa92 389 return(ops->vop_getattr(&ap));
2d3e977e
MD
390}
391
392int
0961aa92
MD
393vop_setattr(struct vop_ops *ops, struct vnode *vp, struct vattr *vap,
394 struct ucred *cred, struct thread *td)
2d3e977e
MD
395{
396 struct vop_setattr_args ap;
397
398 ap.a_head.a_desc = &vop_setattr_desc;
0961aa92 399 ap.a_head.a_ops = ops;
2d3e977e
MD
400 ap.a_vp = vp;
401 ap.a_vap = vap;
402 ap.a_cred = cred;
403 ap.a_td = td;
0961aa92 404 return(ops->vop_setattr(&ap));
2d3e977e
MD
405}
406
407int
0961aa92
MD
408vop_read(struct vop_ops *ops, struct vnode *vp, struct uio *uio, int ioflag,
409 struct ucred *cred)
2d3e977e
MD
410{
411 struct vop_read_args ap;
412
413 ap.a_head.a_desc = &vop_read_desc;
0961aa92 414 ap.a_head.a_ops = ops;
2d3e977e
MD
415 ap.a_vp = vp;
416 ap.a_uio = uio;
417 ap.a_ioflag = ioflag;
418 ap.a_cred = cred;
0961aa92 419 return(ops->vop_read(&ap));
2d3e977e
MD
420}
421
422int
0961aa92
MD
423vop_write(struct vop_ops *ops, struct vnode *vp, struct uio *uio, int ioflag,
424 struct ucred *cred)
2d3e977e
MD
425{
426 struct vop_write_args ap;
427
428 ap.a_head.a_desc = &vop_write_desc;
0961aa92 429 ap.a_head.a_ops = ops;
2d3e977e
MD
430 ap.a_vp = vp;
431 ap.a_uio = uio;
432 ap.a_ioflag = ioflag;
433 ap.a_cred = cred;
0961aa92 434 return(ops->vop_write(&ap));
2d3e977e
MD
435}
436
437int
0961aa92
MD
438vop_lease(struct vop_ops *ops, struct vnode *vp, struct thread *td,
439 struct ucred *cred, int flag)
2d3e977e
MD
440{
441 struct vop_lease_args ap;
442
443 ap.a_head.a_desc = &vop_lease_desc;
0961aa92 444 ap.a_head.a_ops = ops;
2d3e977e
MD
445 ap.a_vp = vp;
446 ap.a_td = td;
447 ap.a_cred = cred;
448 ap.a_flag = flag;
0961aa92 449 return(ops->vop_lease(&ap));
2d3e977e
MD
450}
451
452int
0961aa92
MD
453vop_ioctl(struct vop_ops *ops, struct vnode *vp, u_long command, caddr_t data,
454 int fflag, struct ucred *cred,
455 struct thread *td)
2d3e977e
MD
456{
457 struct vop_ioctl_args ap;
458
459 ap.a_head.a_desc = &vop_ioctl_desc;
0961aa92 460 ap.a_head.a_ops = ops;
2d3e977e
MD
461 ap.a_vp = vp;
462 ap.a_command = command;
463 ap.a_data = data;
464 ap.a_fflag = fflag;
465 ap.a_cred = cred;
466 ap.a_td = td;
0961aa92 467 return(ops->vop_ioctl(&ap));
2d3e977e
MD
468}
469
470int
0961aa92
MD
471vop_poll(struct vop_ops *ops, struct vnode *vp, int events, struct ucred *cred,
472 struct thread *td)
2d3e977e
MD
473{
474 struct vop_poll_args ap;
475
476 ap.a_head.a_desc = &vop_poll_desc;
0961aa92 477 ap.a_head.a_ops = ops;
2d3e977e
MD
478 ap.a_vp = vp;
479 ap.a_events = events;
480 ap.a_cred = cred;
481 ap.a_td = td;
0961aa92 482 return(ops->vop_poll(&ap));
2d3e977e
MD
483}
484
485int
0961aa92 486vop_kqfilter(struct vop_ops *ops, struct vnode *vp, struct knote *kn)
2d3e977e
MD
487{
488 struct vop_kqfilter_args ap;
489
490 ap.a_head.a_desc = &vop_kqfilter_desc;
0961aa92 491 ap.a_head.a_ops = ops;
2d3e977e
MD
492 ap.a_vp = vp;
493 ap.a_kn = kn;
0961aa92 494 return(ops->vop_kqfilter(&ap));
2d3e977e
MD
495}
496
497int
0961aa92 498vop_revoke(struct vop_ops *ops, struct vnode *vp, int flags)
2d3e977e
MD
499{
500 struct vop_revoke_args ap;
501
502 ap.a_head.a_desc = &vop_revoke_desc;
0961aa92 503 ap.a_head.a_ops = ops;
2d3e977e
MD
504 ap.a_vp = vp;
505 ap.a_flags = flags;
0961aa92 506 return(ops->vop_revoke(&ap));
2d3e977e
MD
507}
508
509int
0961aa92
MD
510vop_mmap(struct vop_ops *ops, struct vnode *vp, int fflags, struct ucred *cred,
511 struct thread *td)
2d3e977e
MD
512{
513 struct vop_mmap_args ap;
514
515 ap.a_head.a_desc = &vop_mmap_desc;
0961aa92 516 ap.a_head.a_ops = ops;
2d3e977e
MD
517 ap.a_vp = vp;
518 ap.a_fflags = fflags;
519 ap.a_cred = cred;
520 ap.a_td = td;
0961aa92 521 return(ops->vop_mmap(&ap));
2d3e977e
MD
522}
523
524int
0961aa92 525vop_fsync(struct vop_ops *ops, struct vnode *vp, int waitfor, struct thread *td)
2d3e977e
MD
526{
527 struct vop_fsync_args ap;
528
529 ap.a_head.a_desc = &vop_fsync_desc;
0961aa92 530 ap.a_head.a_ops = ops;
2d3e977e
MD
531 ap.a_vp = vp;
532 ap.a_waitfor = waitfor;
533 ap.a_td = td;
0961aa92 534 return(ops->vop_fsync(&ap));
2d3e977e
MD
535}
536
537int
0961aa92
MD
538vop_remove(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
539 struct vnode *vp, struct componentname *cnp)
2d3e977e
MD
540{
541 struct vop_remove_args ap;
542
543 ap.a_head.a_desc = &vop_remove_desc;
0961aa92 544 ap.a_head.a_ops = ops;
2d3e977e
MD
545 ap.a_dvp = dvp;
546 ap.a_par = par;
547 ap.a_vp = vp;
548 ap.a_cnp = cnp;
0961aa92 549 return(ops->vop_remove(&ap));
2d3e977e
MD
550}
551
552int
0961aa92
MD
553vop_link(struct vop_ops *ops, struct vnode *tdvp, struct namecache *par,
554 struct vnode *vp, struct componentname *cnp)
2d3e977e
MD
555{
556 struct vop_link_args ap;
557
558 ap.a_head.a_desc = &vop_link_desc;
0961aa92 559 ap.a_head.a_ops = ops;
2d3e977e
MD
560 ap.a_tdvp = tdvp;
561 ap.a_par = par;
562 ap.a_vp = vp;
563 ap.a_cnp = cnp;
0961aa92 564 return(ops->vop_link(&ap));
2d3e977e
MD
565}
566
567int
0961aa92
MD
568vop_rename(struct vop_ops *ops, struct vnode *fdvp, struct namecache *fpar,
569 struct vnode *fvp, struct componentname *fcnp,
570 struct vnode *tdvp, struct namecache *tpar,
571 struct vnode *tvp, struct componentname *tcnp)
2d3e977e
MD
572{
573 struct vop_rename_args ap;
574
575 ap.a_head.a_desc = &vop_rename_desc;
0961aa92 576 ap.a_head.a_ops = ops;
2d3e977e
MD
577 ap.a_fdvp = fdvp;
578 ap.a_fpar = fpar;
579 ap.a_fvp = fvp;
580 ap.a_fcnp = fcnp;
581 ap.a_tdvp = tdvp;
582 ap.a_tpar = tpar;
583 ap.a_tvp = tvp;
584 ap.a_tcnp = tcnp;
0961aa92 585 return(ops->vop_rename(&ap));
2d3e977e
MD
586}
587
588int
0961aa92
MD
589vop_mkdir(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
590 struct vnode **vpp, struct componentname *cnp, struct vattr *vap)
2d3e977e
MD
591{
592 struct vop_mkdir_args ap;
593
594 ap.a_head.a_desc = &vop_mkdir_desc;
0961aa92 595 ap.a_head.a_ops = ops;
2d3e977e
MD
596 ap.a_dvp = dvp;
597 ap.a_par = par;
598 ap.a_vpp = vpp;
599 ap.a_cnp = cnp;
600 ap.a_vap = vap;
0961aa92 601 return(ops->vop_mkdir(&ap));
2d3e977e
MD
602}
603
604int
0961aa92
MD
605vop_rmdir(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
606 struct vnode *vp, struct componentname *cnp)
2d3e977e
MD
607{
608 struct vop_rmdir_args ap;
609
610 ap.a_head.a_desc = &vop_rmdir_desc;
0961aa92 611 ap.a_head.a_ops = ops;
2d3e977e
MD
612 ap.a_dvp = dvp;
613 ap.a_par = par;
614 ap.a_vp = vp;
615 ap.a_cnp = cnp;
0961aa92 616 return(ops->vop_rmdir(&ap));
2d3e977e
MD
617}
618
619int
0961aa92
MD
620vop_symlink(struct vop_ops *ops, struct vnode *dvp, struct namecache *par,
621 struct vnode **vpp, struct componentname *cnp,
622 struct vattr *vap, char *target)
2d3e977e
MD
623{
624 struct vop_symlink_args ap;
625
626 ap.a_head.a_desc = &vop_symlink_desc;
0961aa92 627 ap.a_head.a_ops = ops;
2d3e977e
MD
628 ap.a_dvp = dvp;
629 ap.a_par = par;
630 ap.a_vpp = vpp;
631 ap.a_cnp = cnp;
632 ap.a_vap = vap;
633 ap.a_target = target;
0961aa92 634 return(ops->vop_symlink(&ap));
2d3e977e
MD
635}
636
637int
0961aa92
MD
638vop_readdir(struct vop_ops *ops, struct vnode *vp, struct uio *uio,
639 struct ucred *cred, int *eofflag, int *ncookies, u_long **cookies)
2d3e977e
MD
640{
641 struct vop_readdir_args ap;
642
643 ap.a_head.a_desc = &vop_readdir_desc;
0961aa92 644 ap.a_head.a_ops = ops;
2d3e977e
MD
645 ap.a_vp = vp;
646 ap.a_uio = uio;
647 ap.a_cred = cred;
648 ap.a_eofflag = eofflag;
649 ap.a_ncookies = ncookies;
650 ap.a_cookies = cookies;
0961aa92 651 return(ops->vop_readdir(&ap));
2d3e977e
MD
652}
653
654int
0961aa92
MD
655vop_readlink(struct vop_ops *ops, struct vnode *vp, struct uio *uio,
656 struct ucred *cred)
2d3e977e
MD
657{
658 struct vop_readlink_args ap;
659
660 ap.a_head.a_desc = &vop_readlink_desc;
0961aa92 661 ap.a_head.a_ops = ops;
2d3e977e
MD
662 ap.a_vp = vp;
663 ap.a_uio = uio;
664 ap.a_cred = cred;
0961aa92 665 return(ops->vop_readlink(&ap));
2d3e977e
MD
666}
667
668int
0961aa92 669vop_inactive(struct vop_ops *ops, struct vnode *vp, struct thread *td)
2d3e977e
MD
670{
671 struct vop_inactive_args ap;
672
673 ap.a_head.a_desc = &vop_inactive_desc;
0961aa92 674 ap.a_head.a_ops = ops;
2d3e977e
MD
675 ap.a_vp = vp;
676 ap.a_td = td;
0961aa92 677 return(ops->vop_inactive(&ap));
2d3e977e
MD
678}
679
680int
0961aa92 681vop_reclaim(struct vop_ops *ops, struct vnode *vp, struct thread *td)
2d3e977e
MD
682{
683 struct vop_reclaim_args ap;
684
685 ap.a_head.a_desc = &vop_reclaim_desc;
0961aa92 686 ap.a_head.a_ops = ops;
2d3e977e
MD
687 ap.a_vp = vp;
688 ap.a_td = td;
0961aa92 689 return(ops->vop_reclaim(&ap));
2d3e977e
MD
690}
691
692int
0961aa92
MD
693vop_lock(struct vop_ops *ops, struct vnode *vp, struct lwkt_tokref *vlock,
694 int flags, struct thread *td)
2d3e977e
MD
695{
696 struct vop_lock_args ap;
697
698 ap.a_head.a_desc = &vop_lock_desc;
0961aa92 699 ap.a_head.a_ops = ops;
2d3e977e
MD
700 ap.a_vp = vp;
701 ap.a_vlock = vlock;
702 ap.a_flags = flags;
703 ap.a_td = td;
0961aa92 704 return(ops->vop_lock(&ap));
2d3e977e
MD
705}
706
707int
0961aa92
MD
708vop_unlock(struct vop_ops *ops, struct vnode *vp, struct lwkt_tokref *vlock,
709 int flags, struct thread *td)
2d3e977e
MD
710{
711 struct vop_unlock_args ap;
712
713 ap.a_head.a_desc = &vop_unlock_desc;
0961aa92 714 ap.a_head.a_ops = ops;
2d3e977e
MD
715 ap.a_vp = vp;
716 ap.a_vlock = vlock;
717 ap.a_flags = flags;
718 ap.a_td = td;
0961aa92 719 return(ops->vop_unlock(&ap));
2d3e977e
MD
720}
721
722int
0961aa92
MD
723vop_bmap(struct vop_ops *ops, struct vnode *vp, daddr_t bn, struct vnode **vpp,
724 daddr_t *bnp, int *runp, int *runb)
2d3e977e
MD
725{
726 struct vop_bmap_args ap;
727
728 ap.a_head.a_desc = &vop_bmap_desc;
0961aa92 729 ap.a_head.a_ops = ops;
2d3e977e
MD
730 ap.a_vp = vp;
731 ap.a_bn = bn;
732 ap.a_vpp = vpp;
733 ap.a_bnp = bnp;
734 ap.a_runp = runp;
735 ap.a_runb = runb;
0961aa92 736 return(ops->vop_bmap(&ap));
2d3e977e
MD
737}
738
739int
0961aa92 740vop_strategy(struct vop_ops *ops, struct vnode *vp, struct buf *bp)
2d3e977e
MD
741{
742 struct vop_strategy_args ap;
743
744 ap.a_head.a_desc = &vop_strategy_desc;
0961aa92 745 ap.a_head.a_ops = ops;
2d3e977e
MD
746 ap.a_vp = vp;
747 ap.a_bp = bp;
0961aa92 748 return(ops->vop_strategy(&ap));
2d3e977e
MD
749}
750
751int
0961aa92 752vop_print(struct vop_ops *ops, struct vnode *vp)
2d3e977e
MD
753{
754 struct vop_print_args ap;
755
756 ap.a_head.a_desc = &vop_print_desc;
0961aa92 757 ap.a_head.a_ops = ops;
2d3e977e 758 ap.a_vp = vp;
0961aa92 759 return(ops->vop_print(&ap));
2d3e977e
MD
760}
761
762int
0961aa92
MD
763vop_pathconf(struct vop_ops *ops, struct vnode *vp, int name,
764 register_t *retval)
2d3e977e
MD
765{
766 struct vop_pathconf_args ap;
767
768 ap.a_head.a_desc = &vop_pathconf_desc;
0961aa92 769 ap.a_head.a_ops = ops;
2d3e977e
MD
770 ap.a_vp = vp;
771 ap.a_name = name;
772 ap.a_retval = retval;
0961aa92 773 return(ops->vop_pathconf(&ap));
2d3e977e
MD
774}
775
776int
0961aa92
MD
777vop_advlock(struct vop_ops *ops, struct vnode *vp, caddr_t id, int op,
778 struct flock *fl, int flags)
2d3e977e
MD
779{
780 struct vop_advlock_args ap;
781
782 ap.a_head.a_desc = &vop_advlock_desc;
0961aa92 783 ap.a_head.a_ops = ops;
2d3e977e
MD
784 ap.a_vp = vp;
785 ap.a_id = id;
786 ap.a_op = op;
787 ap.a_fl = fl;
788 ap.a_flags = flags;
0961aa92 789 return(ops->vop_advlock(&ap));
2d3e977e
MD
790}
791
792int
0961aa92
MD
793vop_balloc(struct vop_ops *ops, struct vnode *vp, off_t startoffset,
794 int size, struct ucred *cred, int flags,
795 struct buf **bpp)
2d3e977e
MD
796{
797 struct vop_balloc_args ap;
798
799 ap.a_head.a_desc = &vop_balloc_desc;
0961aa92 800 ap.a_head.a_ops = ops;
2d3e977e
MD
801 ap.a_vp = vp;
802 ap.a_startoffset = startoffset;
803 ap.a_size = size;
804 ap.a_cred = cred;
805 ap.a_flags = flags;
806 ap.a_bpp = bpp;
0961aa92 807 return(ops->vop_balloc(&ap));
2d3e977e
MD
808}
809
810int
0961aa92
MD
811vop_reallocblks(struct vop_ops *ops, struct vnode *vp,
812 struct cluster_save *buflist)
2d3e977e
MD
813{
814 struct vop_reallocblks_args ap;
815
816 ap.a_head.a_desc = &vop_reallocblks_desc;
0961aa92 817 ap.a_head.a_ops = ops;
2d3e977e
MD
818 ap.a_vp = vp;
819 ap.a_buflist = buflist;
0961aa92 820 return(ops->vop_reallocblks(&ap));
2d3e977e
MD
821}
822
823int
0961aa92
MD
824vop_getpages(struct vop_ops *ops, struct vnode *vp, vm_page_t *m, int count,
825 int reqpage, vm_ooffset_t offset)
2d3e977e
MD
826{
827 struct vop_getpages_args ap;
828
829 ap.a_head.a_desc = &vop_getpages_desc;
0961aa92 830 ap.a_head.a_ops = ops;
2d3e977e
MD
831 ap.a_vp = vp;
832 ap.a_m = m;
833 ap.a_count = count;
834 ap.a_reqpage = reqpage;
835 ap.a_offset = offset;
0961aa92 836 return(ops->vop_getpages(&ap));
2d3e977e
MD
837}
838
839int
0961aa92
MD
840vop_putpages(struct vop_ops *ops, struct vnode *vp, vm_page_t *m, int count,
841 int sync, int *rtvals, vm_ooffset_t offset)
2d3e977e
MD
842{
843 struct vop_putpages_args ap;
844
845 ap.a_head.a_desc = &vop_putpages_desc;
0961aa92 846 ap.a_head.a_ops = ops;
2d3e977e
MD
847 ap.a_vp = vp;
848 ap.a_m = m;
849 ap.a_count = count;
850 ap.a_sync = sync;
851 ap.a_rtvals = rtvals;
852 ap.a_offset = offset;
0961aa92 853 return(ops->vop_putpages(&ap));
2d3e977e
MD
854}
855
856int
0961aa92
MD
857vop_freeblks(struct vop_ops *ops, struct vnode *vp,
858 daddr_t addr, daddr_t length)
2d3e977e
MD
859{
860 struct vop_freeblks_args ap;
861
862 ap.a_head.a_desc = &vop_freeblks_desc;
0961aa92 863 ap.a_head.a_ops = ops;
2d3e977e
MD
864 ap.a_vp = vp;
865 ap.a_addr = addr;
866 ap.a_length = length;
0961aa92 867 return(ops->vop_freeblks(&ap));
2d3e977e
MD
868}
869
870int
0961aa92 871vop_bwrite(struct vop_ops *ops, struct vnode *vp, struct buf *bp)
2d3e977e
MD
872{
873 struct vop_bwrite_args ap;
874
875 ap.a_head.a_desc = &vop_bwrite_desc;
0961aa92 876 ap.a_head.a_ops = ops;
2d3e977e
MD
877 ap.a_vp = vp;
878 ap.a_bp = bp;
0961aa92 879 return(ops->vop_bwrite(&ap));
2d3e977e
MD
880}
881
882int
0961aa92
MD
883vop_getacl(struct vop_ops *ops, struct vnode *vp, acl_type_t type,
884 struct acl *aclp, struct ucred *cred, struct thread *td)
2d3e977e
MD
885{
886 struct vop_getacl_args ap;
887
888 ap.a_head.a_desc = &vop_getacl_desc;
0961aa92 889 ap.a_head.a_ops = ops;
2d3e977e
MD
890 ap.a_vp = vp;
891 ap.a_type = type;
892 ap.a_aclp = aclp;
893 ap.a_cred = cred;
894 ap.a_td = td;
0961aa92 895 return(ops->vop_getacl(&ap));
2d3e977e
MD
896}
897
898int
0961aa92
MD
899vop_setacl(struct vop_ops *ops, struct vnode *vp, acl_type_t type,
900 struct acl *aclp, struct ucred *cred, struct thread *td)
2d3e977e
MD
901{
902 struct vop_setacl_args ap;
903
904 ap.a_head.a_desc = &vop_setacl_desc;
0961aa92 905 ap.a_head.a_ops = ops;
2d3e977e
MD
906 ap.a_vp = vp;
907 ap.a_type = type;
908 ap.a_aclp = aclp;
909 ap.a_cred = cred;
910 ap.a_td = td;
0961aa92 911 return(ops->vop_setacl(&ap));
2d3e977e
MD
912}
913
914int
0961aa92
MD
915vop_aclcheck(struct vop_ops *ops, struct vnode *vp, acl_type_t type,
916 struct acl *aclp, struct ucred *cred, struct thread *td)
2d3e977e
MD
917{
918 struct vop_aclcheck_args ap;
919
920 ap.a_head.a_desc = &vop_aclcheck_desc;
0961aa92 921 ap.a_head.a_ops = ops;
2d3e977e
MD
922 ap.a_vp = vp;
923 ap.a_type = type;
924 ap.a_aclp = aclp;
925 ap.a_cred = cred;
926 ap.a_td = td;
0961aa92 927 return(ops->vop_aclcheck(&ap));
2d3e977e
MD
928}
929
930int
0961aa92
MD
931vop_getextattr(struct vop_ops *ops, struct vnode *vp, char *name,
932 struct uio *uio, struct ucred *cred, struct thread *td)
2d3e977e
MD
933{
934 struct vop_getextattr_args ap;
935
936 ap.a_head.a_desc = &vop_getextattr_desc;
0961aa92 937 ap.a_head.a_ops = ops;
2d3e977e
MD
938 ap.a_vp = vp;
939 ap.a_name = name;
940 ap.a_uio = uio;
941 ap.a_cred = cred;
942 ap.a_td = td;
0961aa92 943 return(ops->vop_getextattr(&ap));
2d3e977e
MD
944}
945
946int
0961aa92
MD
947vop_setextattr(struct vop_ops *ops, struct vnode *vp, char *name,
948 struct uio *uio, struct ucred *cred, struct thread *td)
2d3e977e
MD
949{
950 struct vop_setextattr_args ap;
951
952 ap.a_head.a_desc = &vop_setextattr_desc;
0961aa92 953 ap.a_head.a_ops = ops;
2d3e977e
MD
954 ap.a_vp = vp;
955 ap.a_name = name;
956 ap.a_uio = uio;
957 ap.a_cred = cred;
958 ap.a_td = td;
0961aa92 959 return(ops->vop_setextattr(&ap));
2d3e977e
MD
960}
961
962int
0961aa92 963vop_createvobject(struct vop_ops *ops, struct vnode *vp, struct thread *td)
2d3e977e
MD
964{
965 struct vop_createvobject_args ap;
966
967 ap.a_head.a_desc = &vop_createvobject_desc;
0961aa92 968 ap.a_head.a_ops = ops;
2d3e977e
MD
969 ap.a_vp = vp;
970 ap.a_td = td;
0961aa92 971 return(ops->vop_createvobject(&ap));
2d3e977e
MD
972}
973
974int
0961aa92 975vop_destroyvobject(struct vop_ops *ops, struct vnode *vp)
2d3e977e
MD
976{
977 struct vop_destroyvobject_args ap;
978
979 ap.a_head.a_desc = &vop_destroyvobject_desc;
0961aa92 980 ap.a_head.a_ops = ops;
2d3e977e 981 ap.a_vp = vp;
0961aa92 982 return(ops->vop_destroyvobject(&ap));
2d3e977e
MD
983}
984
985int
0961aa92 986vop_getvobject(struct vop_ops *ops, struct vnode *vp, struct vm_object **objpp)
2d3e977e
MD
987{
988 struct vop_getvobject_args ap;
989
990 ap.a_head.a_desc = &vop_getvobject_desc;
0961aa92 991 ap.a_head.a_ops = ops;
2d3e977e
MD
992 ap.a_vp = vp;
993 ap.a_objpp = objpp;
0961aa92
MD
994 return(ops->vop_getvobject(&ap));
995}
996
997/************************************************************************
998 * PRIMARY VNODE OPERATIONS FORWARDING CALLS *
999 ************************************************************************
1000 *
1001 * These procedures are called from VFSs such as unionfs and nullfs
1002 * when they wish to forward an operation on one VFS to another. The
1003 * argument structure/message is modified and then directly passed to the
1004 * appropriate routine. This routines may also be called by initiators
1005 * who have an argument structure in hand rather then discreet arguments.
1006 */
1007int
1008vop_vnoperate_ap(struct vop_generic_args *ap)
1009{
1010 return (VOCALL(ap->a_ops, ap));
1011}
1012
1013int
1014vop_islocked_ap(struct vop_islocked_args *ap)
1015{
1016 return(ap->a_head.a_ops->vop_islocked(ap));
1017}
1018
1019int
1020vop_lookup_ap(struct vop_lookup_args *ap)
1021{
1022 return(ap->a_head.a_ops->vop_lookup(ap));
1023}
1024
1025int
1026vop_cachedlookup_ap(struct vop_cachedlookup_args *ap)
1027{
1028 return(ap->a_head.a_ops->vop_cachedlookup(ap));
1029}
1030
1031int
1032vop_create_ap(struct vop_create_args *ap)
1033{
1034 return(ap->a_head.a_ops->vop_create(ap));
1035}
1036
1037int
1038vop_whiteout_ap(struct vop_whiteout_args *ap)
1039{
1040 return(ap->a_head.a_ops->vop_whiteout(ap));
1041}
1042
1043int
1044vop_mknod_ap(struct vop_mknod_args *ap)
1045{
1046 return(ap->a_head.a_ops->vop_mknod(ap));
1047}
1048
1049int
1050vop_open_ap(struct vop_open_args *ap)
1051{
1052 return(ap->a_head.a_ops->vop_open(ap));
1053}
1054
1055int
1056vop_close_ap(struct vop_close_args *ap)
1057{
1058 return(ap->a_head.a_ops->vop_close(ap));
1059}
1060
1061int
1062vop_access_ap(struct vop_access_args *ap)
1063{
1064 return(ap->a_head.a_ops->vop_access(ap));
1065}
1066
1067int
1068vop_getattr_ap(struct vop_getattr_args *ap)
1069{
1070 return(ap->a_head.a_ops->vop_getattr(ap));
1071}
1072
1073int
1074vop_setattr_ap(struct vop_setattr_args *ap)
1075{
1076 return(ap->a_head.a_ops->vop_setattr(ap));
1077}
1078
1079int
1080vop_read_ap(struct vop_read_args *ap)
1081{
1082 return(ap->a_head.a_ops->vop_read(ap));
1083}
1084
1085int
1086vop_write_ap(struct vop_write_args *ap)
1087{
1088 return(ap->a_head.a_ops->vop_write(ap));
1089}
1090
1091int
1092vop_lease_ap(struct vop_lease_args *ap)
1093{
1094 return(ap->a_head.a_ops->vop_lease(ap));
1095}
1096
1097int
1098vop_ioctl_ap(struct vop_ioctl_args *ap)
1099{
1100 return(ap->a_head.a_ops->vop_ioctl(ap));
1101}
1102
1103int
1104vop_poll_ap(struct vop_poll_args *ap)
1105{
1106 return(ap->a_head.a_ops->vop_poll(ap));
1107}
1108
1109int
1110vop_kqfilter_ap(struct vop_kqfilter_args *ap)
1111{
1112 return(ap->a_head.a_ops->vop_kqfilter(ap));
1113}
1114
1115int
1116vop_revoke_ap(struct vop_revoke_args *ap)
1117{
1118 return(ap->a_head.a_ops->vop_revoke(ap));
1119}
1120
1121int
1122vop_mmap_ap(struct vop_mmap_args *ap)
1123{
1124 return(ap->a_head.a_ops->vop_mmap(ap));
1125}
1126
1127int
1128vop_fsync_ap(struct vop_fsync_args *ap)
1129{
1130 return(ap->a_head.a_ops->vop_fsync(ap));
1131}
1132
1133int
1134vop_remove_ap(struct vop_remove_args *ap)
1135{
1136 return(ap->a_head.a_ops->vop_remove(ap));
1137}
1138
1139int
1140vop_link_ap(struct vop_link_args *ap)
1141{
1142 return(ap->a_head.a_ops->vop_link(ap));
1143}
1144
1145int
1146vop_rename_ap(struct vop_rename_args *ap)
1147{
1148 return(ap->a_head.a_ops->vop_rename(ap));
1149}
1150
1151int
1152vop_mkdir_ap(struct vop_mkdir_args *ap)
1153{
1154 return(ap->a_head.a_ops->vop_mkdir(ap));
1155}
1156
1157int
1158vop_rmdir_ap(struct vop_rmdir_args *ap)
1159{
1160 return(ap->a_head.a_ops->vop_rmdir(ap));
1161}
1162
1163int
1164vop_symlink_ap(struct vop_symlink_args *ap)
1165{
1166 return(ap->a_head.a_ops->vop_symlink(ap));
1167}
1168
1169int
1170vop_readdir_ap(struct vop_readdir_args *ap)
1171{
1172 return(ap->a_head.a_ops->vop_readdir(ap));
1173}
1174
1175int
1176vop_readlink_ap(struct vop_readlink_args *ap)
1177{
1178 return(ap->a_head.a_ops->vop_readlink(ap));
1179}
1180
1181int
1182vop_inactive_ap(struct vop_inactive_args *ap)
1183{
1184 return(ap->a_head.a_ops->vop_inactive(ap));
1185}
1186
1187int
1188vop_reclaim_ap(struct vop_reclaim_args *ap)
1189{
1190 return(ap->a_head.a_ops->vop_reclaim(ap));
1191}
1192
1193int
1194vop_lock_ap(struct vop_lock_args *ap)
1195{
1196 return(ap->a_head.a_ops->vop_lock(ap));
1197}
1198
1199int
1200vop_unlock_ap(struct vop_unlock_args *ap)
1201{
1202 return(ap->a_head.a_ops->vop_unlock(ap));
1203}
1204
1205int
1206vop_bmap_ap(struct vop_bmap_args *ap)
1207{
1208 return(ap->a_head.a_ops->vop_bmap(ap));
1209}
1210
1211int
1212vop_strategy_ap(struct vop_strategy_args *ap)
1213{
1214 return(ap->a_head.a_ops->vop_strategy(ap));
1215}
1216
1217int
1218vop_print_ap(struct vop_print_args *ap)
1219{
1220 return(ap->a_head.a_ops->vop_print(ap));
1221}
1222
1223int
1224vop_pathconf_ap(struct vop_pathconf_args *ap)
1225{
1226 return(ap->a_head.a_ops->vop_pathconf(ap));
1227}
1228
1229int
1230vop_advlock_ap(struct vop_advlock_args *ap)
1231{
1232 return(ap->a_head.a_ops->vop_advlock(ap));
1233}
1234
1235int
1236vop_balloc_ap(struct vop_balloc_args *ap)
1237{
1238 return(ap->a_head.a_ops->vop_balloc(ap));
1239}
1240
1241int
1242vop_reallocblks_ap(struct vop_reallocblks_args *ap)
1243{
1244 return(ap->a_head.a_ops->vop_reallocblks(ap));
1245}
1246
1247int
1248vop_getpages_ap(struct vop_getpages_args *ap)
1249{
1250 return(ap->a_head.a_ops->vop_getpages(ap));
1251}
1252
1253int
1254vop_putpages_ap(struct vop_putpages_args *ap)
1255{
1256 return(ap->a_head.a_ops->vop_putpages(ap));
1257}
1258
1259int
1260vop_freeblks_ap(struct vop_freeblks_args *ap)
1261{
1262 return(ap->a_head.a_ops->vop_freeblks(ap));
1263}
1264
1265int
1266vop_bwrite_ap(struct vop_bwrite_args *ap)
1267{
1268 return(ap->a_head.a_ops->vop_bwrite(ap));
1269}
1270
1271int
1272vop_getacl_ap(struct vop_getacl_args *ap)
1273{
1274 return(ap->a_head.a_ops->vop_getacl(ap));
1275}
1276
1277int
1278vop_setacl_ap(struct vop_setacl_args *ap)
1279{
1280 return(ap->a_head.a_ops->vop_setacl(ap));
1281}
1282
1283int
1284vop_aclcheck_ap(struct vop_aclcheck_args *ap)
1285{
1286 return(ap->a_head.a_ops->vop_aclcheck(ap));
1287}
1288
1289int
1290vop_getextattr_ap(struct vop_getextattr_args *ap)
1291{
1292 return(ap->a_head.a_ops->vop_getextattr(ap));
1293}
1294
1295int
1296vop_setextattr_ap(struct vop_setextattr_args *ap)
1297{
1298 return(ap->a_head.a_ops->vop_setextattr(ap));
1299}
1300
1301int
1302vop_createvobject_ap(struct vop_createvobject_args *ap)
1303{
1304 return(ap->a_head.a_ops->vop_createvobject(ap));
1305}
1306
1307int
1308vop_destroyvobject_ap(struct vop_destroyvobject_args *ap)
1309{
1310 return(ap->a_head.a_ops->vop_destroyvobject(ap));
1311}
1312
1313int
1314vop_getvobject_ap(struct vop_getvobject_args *ap)
1315{
1316 return(ap->a_head.a_ops->vop_getvobject(ap));
2d3e977e
MD
1317}
1318