vnode_if.src revision 221836
1139804Simp#-
21541Srgrimes# Copyright (c) 1992, 1993
31541Srgrimes#	The Regents of the University of California.  All rights reserved.
41541Srgrimes#
51541Srgrimes# Redistribution and use in source and binary forms, with or without
61541Srgrimes# modification, are permitted provided that the following conditions
71541Srgrimes# are met:
81541Srgrimes# 1. Redistributions of source code must retain the above copyright
91541Srgrimes#    notice, this list of conditions and the following disclaimer.
101541Srgrimes# 2. Redistributions in binary form must reproduce the above copyright
111541Srgrimes#    notice, this list of conditions and the following disclaimer in the
121541Srgrimes#    documentation and/or other materials provided with the distribution.
131541Srgrimes# 4. Neither the name of the University nor the names of its contributors
141541Srgrimes#    may be used to endorse or promote products derived from this software
151541Srgrimes#    without specific prior written permission.
161541Srgrimes#
171541Srgrimes# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
181541Srgrimes# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
191541Srgrimes# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
201541Srgrimes# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
211541Srgrimes# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
221541Srgrimes# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
231541Srgrimes# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
241541Srgrimes# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
251541Srgrimes# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
261541Srgrimes# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
271541Srgrimes# SUCH DAMAGE.
281541Srgrimes#
2922521Sdyson#	@(#)vnode_if.src	8.12 (Berkeley) 5/14/95
3050477Speter# $FreeBSD: head/sys/kern/vnode_if.src 221836 2011-05-13 14:29:28Z mdf $
311541Srgrimes#
3222521Sdyson
3322521Sdyson#
34159082Sdds# Above each of the vop descriptors in lines starting with %%
35159082Sdds# is a specification of the locking protocol used by each vop call.
36159082Sdds# The first column is the name of the variable, the remaining three
37159082Sdds# columns are in, out and error respectively.  The "in" column defines
38159082Sdds# the lock state on input, the "out" column defines the state on succesful
39159082Sdds# return, and the "error" column defines the locking state on error exit.
4022521Sdyson#
4122521Sdyson# The locking value can take the following values:
4254444Seivind# L: locked; not converted to type of lock.
4354444Seivind# A: any lock type.
4454444Seivind# S: locked with shared lock.
4554444Seivind# E: locked with exclusive lock for this process.
4654444Seivind# O: locked with exclusive lock for other process.
4745058Seivind# U: unlocked.
4822521Sdyson# -: not applicable.  vnode does not yet (or no longer) exists.
4922521Sdyson# =: the same on input and output, may be either L or U.
5022521Sdyson# X: locked if not nil.
5122521Sdyson#
52116615Sse# The paramater named "vpp" is assumed to be always used with double
53116615Sse# indirection (**vpp) and that name is hard-codeed in vnode_if.awk !
54116615Sse#
55159082Sdds# Lines starting with %! specify a pre or post-condition function
56159082Sdds# to call before/after the vop call.
57159082Sdds#
58116615Sse# If other such parameters are introduced, they have to be added to
59116615Sse# the AWK script at the head of the definition of "add_debug_code()".
60116615Sse#
6122521Sdyson
6251679Seivindvop_islocked {
6351679Seivind	IN struct vnode *vp;
6451679Seivind};
6551679Seivind
66159082Sdds%% lookup	dvp	L ? ?
67159082Sdds%% lookup	vpp	- L -
68159082Sdds%! lookup	pre	vop_lookup_pre
69159082Sdds%! lookup	post	vop_lookup_post
70159082Sdds
7122521Sdyson# XXX - the lookup locking protocol defies simple description and depends
7222521Sdyson#	on the flags and operation fields in the (cnp) structure.  Note
7322521Sdyson#	especially that *vpp may equal dvp and both may be locked.
74159082Sdds
751541Srgrimesvop_lookup {
761541Srgrimes	IN struct vnode *dvp;
771541Srgrimes	INOUT struct vnode **vpp;
781541Srgrimes	IN struct componentname *cnp;
791541Srgrimes};
801541Srgrimes
81159082Sdds%% cachedlookup	dvp	L ? ?
82159082Sdds%% cachedlookup	vpp	- L -
83159082Sdds
8428732Sphk# This must be an exact copy of lookup.  See kern/vfs_cache.c for details.
85159082Sdds
8628732Sphkvop_cachedlookup {
8728732Sphk	IN struct vnode *dvp;
8828732Sphk	INOUT struct vnode **vpp;
8928732Sphk	IN struct componentname *cnp;
9028732Sphk};
9128732Sphk
92159082Sdds%% create	dvp	E E E
93159082Sdds%% create	vpp	- L -
94159082Sdds%! create	post	vop_create_post
95159082Sdds
961541Srgrimesvop_create {
9735823Smsmith	IN struct vnode *dvp;
981541Srgrimes	OUT struct vnode **vpp;
991541Srgrimes	IN struct componentname *cnp;
1001541Srgrimes	IN struct vattr *vap;
1011541Srgrimes};
1021541Srgrimes
103159082Sdds
104159082Sdds%% whiteout	dvp	E E E
105159082Sdds
10622521Sdysonvop_whiteout {
10735823Smsmith	IN struct vnode *dvp;
10822521Sdyson	IN struct componentname *cnp;
10922521Sdyson	IN int flags;
11022521Sdyson};
11122521Sdyson
112159082Sdds
113159082Sdds%% mknod	dvp	E E E
114159082Sdds%% mknod	vpp	- L -
115159082Sdds%! mknod	post	vop_mknod_post
116159082Sdds
1171541Srgrimesvop_mknod {
11835823Smsmith	IN struct vnode *dvp;
11953101Seivind	OUT struct vnode **vpp;
1201541Srgrimes	IN struct componentname *cnp;
1211541Srgrimes	IN struct vattr *vap;
1221541Srgrimes};
1231541Srgrimes
124159082Sdds
125159082Sdds%% open		vp	L L L
126159082Sdds
1271541Srgrimesvop_open {
1281541Srgrimes	IN struct vnode *vp;
1291541Srgrimes	IN int mode;
1301541Srgrimes	IN struct ucred *cred;
13183366Sjulian	IN struct thread *td;
132170152Skib	IN struct file *fp;
1331541Srgrimes};
1341541Srgrimes
135159082Sdds
136189696Sjhb%% close	vp	L L L
137159082Sdds
1381541Srgrimesvop_close {
1391541Srgrimes	IN struct vnode *vp;
1401541Srgrimes	IN int fflag;
1411541Srgrimes	IN struct ucred *cred;
14283366Sjulian	IN struct thread *td;
1431541Srgrimes};
1441541Srgrimes
145159082Sdds
146159082Sdds%% access	vp	L L L
147159082Sdds
1481541Srgrimesvop_access {
1491541Srgrimes	IN struct vnode *vp;
150184413Strasz	IN accmode_t accmode;
1511541Srgrimes	IN struct ucred *cred;
15283366Sjulian	IN struct thread *td;
1531541Srgrimes};
1541541Srgrimes
155159082Sdds
156193092Strasz%% accessx	vp	L L L
157193092Strasz
158193092Straszvop_accessx {
159193092Strasz	IN struct vnode *vp;
160193092Strasz	IN accmode_t accmode;
161193092Strasz	IN struct ucred *cred;
162193092Strasz	IN struct thread *td;
163193092Strasz};
164193092Strasz
165193092Strasz
166159082Sdds%% getattr	vp	L L L
167159082Sdds
1681541Srgrimesvop_getattr {
1691541Srgrimes	IN struct vnode *vp;
17054803Srwatson	OUT struct vattr *vap;
1711541Srgrimes	IN struct ucred *cred;
1721541Srgrimes};
1731541Srgrimes
174159082Sdds
175159082Sdds%% setattr	vp	E E E
176159082Sdds%! setattr	post	vop_setattr_post
177159082Sdds
1781541Srgrimesvop_setattr {
1791541Srgrimes	IN struct vnode *vp;
1801541Srgrimes	IN struct vattr *vap;
1811541Srgrimes	IN struct ucred *cred;
1821541Srgrimes};
1831541Srgrimes
184187526Sjhb%% markatime	vp	L L L
185159082Sdds
186187526Sjhbvop_markatime {
187187526Sjhb	IN struct vnode *vp;
188187526Sjhb};
189187526Sjhb
190159082Sdds%% read		vp	L L L
191159082Sdds
1921541Srgrimesvop_read {
1931541Srgrimes	IN struct vnode *vp;
1941541Srgrimes	INOUT struct uio *uio;
1951541Srgrimes	IN int ioflag;
1961541Srgrimes	IN struct ucred *cred;
1971541Srgrimes};
1981541Srgrimes
199159082Sdds
200193762Sps%% write	vp	L L L
201159082Sdds%! write	pre	VOP_WRITE_PRE
202159082Sdds%! write	post	VOP_WRITE_POST
203159082Sdds
2041541Srgrimesvop_write {
2051541Srgrimes	IN struct vnode *vp;
2061541Srgrimes	INOUT struct uio *uio;
2071541Srgrimes	IN int ioflag;
2081541Srgrimes	IN struct ucred *cred;
2091541Srgrimes};
2101541Srgrimes
211159082Sdds
212159082Sdds%% ioctl	vp	U U U
213159082Sdds
2141541Srgrimesvop_ioctl {
2151541Srgrimes	IN struct vnode *vp;
21622521Sdyson	IN u_long command;
217153400Sdes	IN void *data;
2181541Srgrimes	IN int fflag;
2191541Srgrimes	IN struct ucred *cred;
22083366Sjulian	IN struct thread *td;
2211541Srgrimes};
2221541Srgrimes
223159082Sdds
224184377Sjhb%% poll		vp	U U U
225159082Sdds
22629353Spetervop_poll {
2271541Srgrimes	IN struct vnode *vp;
22829353Speter	IN int events;
2291541Srgrimes	IN struct ucred *cred;
23083366Sjulian	IN struct thread *td;
2311541Srgrimes};
2321541Srgrimes
233159082Sdds
234159082Sdds%% kqfilter	vp	U U U
235159082Sdds
23672521Sjlemonvop_kqfilter {
23772521Sjlemon	IN struct vnode *vp;
23872521Sjlemon	IN struct knote *kn;
23972521Sjlemon};
24072521Sjlemon
241159082Sdds
242159082Sdds%% revoke	vp	L L L
243159082Sdds
24422521Sdysonvop_revoke {
24522521Sdyson	IN struct vnode *vp;
24622521Sdyson	IN int flags;
24722521Sdyson};
24822521Sdyson
249159082Sdds
250194019Sps%% fsync	vp	L L L
251159082Sdds
2521541Srgrimesvop_fsync {
2531541Srgrimes	IN struct vnode *vp;
2541541Srgrimes	IN int waitfor;
25583366Sjulian	IN struct thread *td;
2561541Srgrimes};
2571541Srgrimes
258159082Sdds
259159082Sdds%% remove	dvp	E E E
260159082Sdds%% remove	vp	E E E
261159082Sdds%! remove	post	vop_remove_post
262159082Sdds
2631541Srgrimesvop_remove {
26435823Smsmith	IN struct vnode *dvp;
26535823Smsmith	IN struct vnode *vp;
2661541Srgrimes	IN struct componentname *cnp;
2671541Srgrimes};
2681541Srgrimes
269159082Sdds
270159082Sdds%% link		tdvp	E E E
271159082Sdds%% link		vp	E E E
272159082Sdds%! link		post	vop_link_post
273159082Sdds
2749842Sdgvop_link {
27535823Smsmith	IN struct vnode *tdvp;
2769842Sdg	IN struct vnode *vp;
2779842Sdg	IN struct componentname *cnp;
2789842Sdg};
2791541Srgrimes
280159082Sdds
281159082Sdds%! rename	pre	vop_rename_pre
282159082Sdds%! rename	post	vop_rename_post
283159082Sdds
2841541Srgrimesvop_rename {
2851541Srgrimes	IN WILLRELE struct vnode *fdvp;
2861541Srgrimes	IN WILLRELE struct vnode *fvp;
2871541Srgrimes	IN struct componentname *fcnp;
2881541Srgrimes	IN WILLRELE struct vnode *tdvp;
2891541Srgrimes	IN WILLRELE struct vnode *tvp;
2901541Srgrimes	IN struct componentname *tcnp;
2911541Srgrimes};
2921541Srgrimes
293159082Sdds
294159082Sdds%% mkdir	dvp	E E E
295159082Sdds%% mkdir	vpp	- E -
296159082Sdds%! mkdir	post	vop_mkdir_post
297159082Sdds
2981541Srgrimesvop_mkdir {
29935823Smsmith	IN struct vnode *dvp;
3001541Srgrimes	OUT struct vnode **vpp;
3011541Srgrimes	IN struct componentname *cnp;
3021541Srgrimes	IN struct vattr *vap;
3031541Srgrimes};
3041541Srgrimes
305159082Sdds
306159082Sdds%% rmdir	dvp	E E E
307159082Sdds%% rmdir	vp	E E E
308159082Sdds%! rmdir	post	vop_rmdir_post
309159082Sdds
3101541Srgrimesvop_rmdir {
31135823Smsmith	IN struct vnode *dvp;
31235823Smsmith	IN struct vnode *vp;
3131541Srgrimes	IN struct componentname *cnp;
3141541Srgrimes};
3151541Srgrimes
316159082Sdds
317159082Sdds%% symlink	dvp	E E E
318159082Sdds%% symlink	vpp	- E -
319159082Sdds%! symlink	post	vop_symlink_post
320159082Sdds
3211541Srgrimesvop_symlink {
32235823Smsmith	IN struct vnode *dvp;
32353131Seivind	OUT struct vnode **vpp;
3241541Srgrimes	IN struct componentname *cnp;
3251541Srgrimes	IN struct vattr *vap;
3261541Srgrimes	IN char *target;
3271541Srgrimes};
3281541Srgrimes
329159082Sdds
330159082Sdds%% readdir	vp	L L L
331159082Sdds
3321541Srgrimesvop_readdir {
3331541Srgrimes	IN struct vnode *vp;
3341541Srgrimes	INOUT struct uio *uio;
3351541Srgrimes	IN struct ucred *cred;
3363167Sdfr	INOUT int *eofflag;
33722521Sdyson	OUT int *ncookies;
33822521Sdyson	INOUT u_long **cookies;
3391541Srgrimes};
3401541Srgrimes
341159082Sdds
342159082Sdds%% readlink	vp	L L L
343159082Sdds
3441541Srgrimesvop_readlink {
3451541Srgrimes	IN struct vnode *vp;
3461541Srgrimes	INOUT struct uio *uio;
3471541Srgrimes	IN struct ucred *cred;
3481541Srgrimes};
3491541Srgrimes
350159082Sdds
351159082Sdds%% inactive	vp	E E E
352159082Sdds
3531541Srgrimesvop_inactive {
3541541Srgrimes	IN struct vnode *vp;
35583366Sjulian	IN struct thread *td;
3561541Srgrimes};
3571541Srgrimes
358159082Sdds
359159082Sdds%% reclaim	vp	E E E
360159082Sdds
3611541Srgrimesvop_reclaim {
3621541Srgrimes	IN struct vnode *vp;
36383366Sjulian	IN struct thread *td;
3641541Srgrimes};
3651541Srgrimes
366159082Sdds
367169671Skib%! lock1	pre	vop_lock_pre
368169671Skib%! lock1	post	vop_lock_post
369159082Sdds
370169671Skibvop_lock1 {
3711541Srgrimes	IN struct vnode *vp;
37222521Sdyson	IN int flags;
373164248Skmacy	IN char *file;
374164248Skmacy	IN int line;
3751541Srgrimes};
3761541Srgrimes
377159082Sdds
378159082Sdds%! unlock	pre	vop_unlock_pre
379159082Sdds%! unlock	post	vop_unlock_post
380159082Sdds
3811541Srgrimesvop_unlock {
3821541Srgrimes	IN struct vnode *vp;
38322521Sdyson	IN int flags;
3841541Srgrimes};
3851541Srgrimes
386159082Sdds
387159082Sdds%% bmap		vp	L L L
388159082Sdds
3891541Srgrimesvop_bmap {
3901541Srgrimes	IN struct vnode *vp;
39196572Sphk	IN daddr_t bn;
392137726Sphk	OUT struct bufobj **bop;
39396572Sphk	IN daddr_t *bnp;
3941541Srgrimes	OUT int *runp;
39510551Sdyson	OUT int *runb;
3961541Srgrimes};
3971541Srgrimes
398159082Sdds
399159082Sdds%% strategy	vp	L L L
400159082Sdds%! strategy	pre	vop_strategy_pre
401159082Sdds
40237384Sjulianvop_strategy {
40337384Sjulian	IN struct vnode *vp;
40437384Sjulian	IN struct buf *bp;
40537384Sjulian};
4061541Srgrimes
407159082Sdds
408159082Sdds%% getwritemount vp	= = =
409159082Sdds
41062976Smckusickvop_getwritemount {
41162976Smckusick	IN struct vnode *vp;
41262976Smckusick	OUT struct mount **mpp;
41362976Smckusick};
41462976Smckusick
415159082Sdds
416176590Skib%% print	vp	- - -
417159082Sdds
4181541Srgrimesvop_print {
4191541Srgrimes	IN struct vnode *vp;
4201541Srgrimes};
4211541Srgrimes
422159082Sdds
423159082Sdds%% pathconf	vp	L L L
424159082Sdds
4251541Srgrimesvop_pathconf {
4261541Srgrimes	IN struct vnode *vp;
4271541Srgrimes	IN int name;
42822521Sdyson	OUT register_t *retval;
4291541Srgrimes};
4301541Srgrimes
431159082Sdds
432159082Sdds%% advlock	vp	U U U
433159082Sdds
4341541Srgrimesvop_advlock {
4351541Srgrimes	IN struct vnode *vp;
436153400Sdes	IN void *id;
4371541Srgrimes	IN int op;
4381541Srgrimes	IN struct flock *fl;
4391541Srgrimes	IN int flags;
4401541Srgrimes};
4411541Srgrimes
442159082Sdds
443177633Sdfr%% advlockasync	vp	U U U
444177633Sdfr
445177633Sdfrvop_advlockasync {
446177633Sdfr	IN struct vnode *vp;
447177633Sdfr	IN void *id;
448177633Sdfr	IN int op;
449177633Sdfr	IN struct flock *fl;
450177633Sdfr	IN int flags;
451177633Sdfr	IN struct task *task;	
452177633Sdfr	INOUT void **cookiep;
453177633Sdfr};
454177633Sdfr
455177633Sdfr
456208003Szml%% advlockpurge	vp	E E E
457208003Szml
458208003Szmlvop_advlockpurge {
459208003Szml	IN struct vnode *vp;
460208003Szml};
461208003Szml
462208003Szml
463159082Sdds%% reallocblks	vp	E E E
464159082Sdds
4651541Srgrimesvop_reallocblks {
4661541Srgrimes	IN struct vnode *vp;
4671541Srgrimes	IN struct cluster_save *buflist;
4681541Srgrimes};
4691541Srgrimes
470159082Sdds
471159082Sdds%% getpages	vp	L L L
472159082Sdds
47310551Sdysonvop_getpages {
47410551Sdyson	IN struct vnode *vp;
47510551Sdyson	IN vm_page_t *m;
47610551Sdyson	IN int count;
47710551Sdyson	IN int reqpage;
47812767Sdyson	IN vm_ooffset_t offset;
47910551Sdyson};
48010551Sdyson
481159082Sdds
482159082Sdds%% putpages	vp	E E E
483159082Sdds
48410551Sdysonvop_putpages {
48510551Sdyson	IN struct vnode *vp;
48610551Sdyson	IN vm_page_t *m;
48710551Sdyson	IN int count;
48810551Sdyson	IN int sync;
48910551Sdyson	IN int *rtvals;
49012767Sdyson	IN vm_ooffset_t offset;
49110551Sdyson};
49211704Sdyson
493159082Sdds
494159082Sdds%% getacl	vp	L L L
495159082Sdds
49654803Srwatsonvop_getacl {
49754803Srwatson	IN struct vnode *vp;
49854803Srwatson	IN acl_type_t type;
49954803Srwatson	OUT struct acl *aclp;
50054803Srwatson	IN struct ucred *cred;
50183366Sjulian	IN struct thread *td;
50254803Srwatson};
50354803Srwatson
504159082Sdds
505159082Sdds%% setacl	vp	E E E
506159082Sdds
50754803Srwatsonvop_setacl {
50854803Srwatson	IN struct vnode *vp;
50954803Srwatson	IN acl_type_t type;
51054803Srwatson	IN struct acl *aclp;
51154803Srwatson	IN struct ucred *cred;
51283366Sjulian	IN struct thread *td;
51354803Srwatson};
51454803Srwatson
515159082Sdds
516159082Sdds%% aclcheck	vp	= = =
517159082Sdds
51854803Srwatsonvop_aclcheck {
51954803Srwatson	IN struct vnode *vp;
52054803Srwatson	IN acl_type_t type;
52154803Srwatson	IN struct acl *aclp;
52254803Srwatson	IN struct ucred *cred;
52383366Sjulian	IN struct thread *td;
52454803Srwatson};
52554803Srwatson
526159082Sdds
527159082Sdds%% closeextattr	vp	L L L
528159082Sdds
529102990Sphkvop_closeextattr {
530102990Sphk	IN struct vnode *vp;
531102990Sphk	IN int commit;
532102990Sphk	IN struct ucred *cred;
533102990Sphk	IN struct thread *td;
534102990Sphk};
535102990Sphk
536159082Sdds
537159082Sdds%% getextattr	vp	L L L
538159082Sdds
53954803Srwatsonvop_getextattr {
54054803Srwatson	IN struct vnode *vp;
54174437Srwatson	IN int attrnamespace;
54265119Srwatson	IN const char *name;
54354803Srwatson	INOUT struct uio *uio;
54490448Srwatson	OUT size_t *size;
54554803Srwatson	IN struct ucred *cred;
54683366Sjulian	IN struct thread *td;
54754803Srwatson};
54854803Srwatson
549159082Sdds
550159082Sdds%% listextattr	vp	L L L
551159082Sdds
552115867Srwatsonvop_listextattr {
553115867Srwatson	IN struct vnode *vp;
554115867Srwatson	IN int attrnamespace;
555115867Srwatson	INOUT struct uio *uio;
556115867Srwatson	OUT size_t *size;
557115867Srwatson	IN struct ucred *cred;
558115867Srwatson	IN struct thread *td;
559115867Srwatson};
560115867Srwatson
561159082Sdds
562159082Sdds%% openextattr	vp	L L L
563159082Sdds
564102990Sphkvop_openextattr {
565102990Sphk	IN struct vnode *vp;
566102990Sphk	IN struct ucred *cred;
567102990Sphk	IN struct thread *td;
568102990Sphk};
569102990Sphk
570159082Sdds
571159082Sdds%% deleteextattr	vp	E E E
572159082Sdds
573118131Srwatsonvop_deleteextattr {
574116698Srwatson	IN struct vnode *vp;
575116698Srwatson	IN int attrnamespace;
576116698Srwatson	IN const char *name;
577116698Srwatson	IN struct ucred *cred;
578116698Srwatson	IN struct thread *td;
579116698Srwatson};
580116698Srwatson
581159082Sdds
582159082Sdds%% setextattr	vp	E E E
583159082Sdds
58454803Srwatsonvop_setextattr {
58554803Srwatson	IN struct vnode *vp;
58674437Srwatson	IN int attrnamespace;
58765119Srwatson	IN const char *name;
58854803Srwatson	INOUT struct uio *uio;
58954803Srwatson	IN struct ucred *cred;
59083366Sjulian	IN struct thread *td;
59154803Srwatson};
59265770Sbp
593159082Sdds
594159082Sdds%% setlabel	vp	E E E
595159082Sdds
596100984Srwatsonvop_setlabel {
597100984Srwatson	IN struct vnode *vp;
598100984Srwatson	IN struct label *label;
599100984Srwatson	IN struct ucred *cred;
600100984Srwatson	IN struct thread *td;
601100984Srwatson};
602166774Spjd
603166774Spjd
604184377Sjhb%% vptofh	vp	= = =
605166774Spjd
606166774Spjdvop_vptofh {
607166774Spjd	IN struct vnode *vp;
608166774Spjd	IN struct fid *fhp;
609166774Spjd};
610185956Smarcus
611220791Smdf
612185956Smarcus%% vptocnp		vp	L L L
613185956Smarcus%% vptocnp		vpp	- U -
614185956Smarcus
615185956Smarcusvop_vptocnp {
616185956Smarcus	IN struct vnode *vp;
617185956Smarcus	OUT struct vnode **vpp;
618194601Skib	IN struct ucred *cred;
619185956Smarcus	INOUT char *buf;
620185956Smarcus	INOUT int *buflen;
621185956Smarcus};
622220791Smdf
623220791Smdf
624220846Smdf%% allocate	vp	E E E
625220791Smdf
626220791Smdfvop_allocate {
627220791Smdf	IN struct vnode *vp;
628221836Smdf	INOUT off_t *offset;
629221836Smdf	INOUT off_t *len;
630220791Smdf};
631