vnode_if.src revision 208003
11541Srgrimes#-
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#
291541Srgrimes#	@(#)vnode_if.src	8.12 (Berkeley) 5/14/95
301541Srgrimes# $FreeBSD: head/sys/kern/vnode_if.src 208003 2010-05-12 21:24:46Z zml $
311541Srgrimes#
321541Srgrimes
331541Srgrimes#
3414525Shsu# Above each of the vop descriptors in lines starting with %%
351541Srgrimes# is a specification of the locking protocol used by each vop call.
361541Srgrimes# The first column is the name of the variable, the remaining three
37116182Sobrien# columns are in, out and error respectively.  The "in" column defines
38116182Sobrien# the lock state on input, the "out" column defines the state on succesful
39116182Sobrien# return, and the "error" column defines the locking state on error exit.
40235459Srstone#
4113203Swollman# The locking value can take the following values:
42178272Sjeff# L: locked; not converted to type of lock.
4313203Swollman# A: any lock type.
441541Srgrimes# S: locked with shared lock.
451541Srgrimes# E: locked with exclusive lock for this process.
4674927Sjhb# O: locked with exclusive lock for other process.
47131927Smarcel# U: unlocked.
481541Srgrimes# -: not applicable.  vnode does not yet (or no longer) exists.
4965557Sjasone# =: the same on input and output, may be either L or U.
5069645Sjhb# X: locked if not nil.
5167362Sjhb#
5274927Sjhb# The paramater named "vpp" is assumed to be always used with double
5374927Sjhb# indirection (**vpp) and that name is hard-codeed in vnode_if.awk !
54104964Sjeff#
55235459Srstone# Lines starting with %! specify a pre or post-condition function
561541Srgrimes# to call before/after the vop call.
57126326Sjhb#
5876078Sjhb# If other such parameters are introduced, they have to be added to
5974927Sjhb# the AWK script at the head of the definition of "add_debug_code()".
6027989Sjulian#
6169512Sjake
6274927Sjhbvop_islocked {
631541Srgrimes	IN struct vnode *vp;
6434924Sbde};
651541Srgrimes
661541Srgrimes%% lookup	dvp	L ? ?
671541Srgrimes%% lookup	vpp	- L -
681541Srgrimes%! lookup	pre	vop_lookup_pre
691541Srgrimes%! lookup	post	vop_lookup_post
70184042Skmacy
71184042Skmacy# XXX - the lookup locking protocol defies simple description and depends
72184042Skmacy#	on the flags and operation fields in the (cnp) structure.  Note
73184042Skmacy#	especially that *vpp may equal dvp and both may be locked.
74184042Skmacy
75184042Skmacyvop_lookup {
76124954Sjeff	IN struct vnode *dvp;
77177253Srwatson	INOUT struct vnode **vpp;
78177253Srwatson	IN struct componentname *cnp;
7910358Sjulian};
8044218Sbde
81248186Smav%% cachedlookup	dvp	L ? ?
821541Srgrimes%% cachedlookup	vpp	- L -
83125292Sjeff
8469286Sjake# This must be an exact copy of lookup.  See kern/vfs_cache.c for details.
8585227Siedowse
8685227Siedowsevop_cachedlookup {
8785227Siedowse	IN struct vnode *dvp;
8885227Siedowse	INOUT struct vnode **vpp;
8985227Siedowse	IN struct componentname *cnp;
9085227Siedowse};
9185227Siedowse
9285227Siedowse%% create	dvp	E E E
9385227Siedowse%% create	vpp	- L -
9485227Siedowse%! create	post	vop_create_post
9585227Siedowse
9685227Siedowsevop_create {
97107134Sjeff	IN struct vnode *dvp;
98273736Shselasky	OUT struct vnode **vpp;
99107134Sjeff	IN struct componentname *cnp;
100125292Sjeff	IN struct vattr *vap;
1017090Sbde};
102235459Srstone
103260817Savg
104235459Srstone%% whiteout	dvp	E E E
105235459Srstone
106235459Srstonevop_whiteout {
107235459Srstone	IN struct vnode *dvp;
108235459Srstone	IN struct componentname *cnp;
109235459Srstone	IN int flags;
110260817Savg};
111260817Savg
112260817Savg
113260817Savg%% mknod	dvp	E E E
114260817Savg%% mknod	vpp	- L -
115235459Srstone%! mknod	post	vop_mknod_post
116254167Scognet
117254167Scognetvop_mknod {
11817366Sdg	IN struct vnode *dvp;
11917366Sdg	OUT struct vnode **vpp;
120104964Sjeff	IN struct componentname *cnp;
121126326Sjhb	IN struct vattr *vap;
12217366Sdg};
12317366Sdg
1241541Srgrimes
125254167Scognet%% open		vp	L L L
126254167Scognet
127254167Scognetvop_open {
128254167Scognet	IN struct vnode *vp;
129254167Scognet	IN int mode;
130254167Scognet	IN struct ucred *cred;
131155924Sjhb	IN struct thread *td;
132155924Sjhb	IN struct file *fp;
133252357Sdavide};
134245049Sbjk
135245049Sbjk
1361541Srgrimes%% close	vp	L L L
137245049Sbjk
1381541Srgrimesvop_close {
1391541Srgrimes	IN struct vnode *vp;
14065708Sjake	IN int fflag;
141167387Sjhb	IN struct ucred *cred;
142167387Sjhb	IN struct thread *td;
143167387Sjhb};
1441541Srgrimes
1451541Srgrimes
146177272Srwatson%% access	vp	L L L
147247787Sdavide
1481541Srgrimesvop_access {
149126326Sjhb	IN struct vnode *vp;
150126326Sjhb	IN accmode_t accmode;
151167387Sjhb	IN struct ucred *cred;
152255745Sdavide	IN struct thread *td;
153255745Sdavide};
154167387Sjhb
1551541Srgrimes
156126326Sjhb%% accessx	vp	L L L
157126326Sjhb
1581541Srgrimesvop_accessx {
15997995Sjhb	IN struct vnode *vp;
160234494Sjhb	IN accmode_t accmode;
1611541Srgrimes	IN struct ucred *cred;
162167387Sjhb	IN struct thread *td;
163167387Sjhb};
164247787Sdavide
165181921Sed
166126326Sjhb%% getattr	vp	L L L
167126326Sjhb
168181394Sjhbvop_getattr {
169181394Sjhb	IN struct vnode *vp;
170181394Sjhb	OUT struct vattr *vap;
171167387Sjhb	IN struct ucred *cred;
172167387Sjhb};
173167387Sjhb
174167387Sjhb
175126326Sjhb%% setattr	vp	E E E
176228424Savg%! setattr	post	vop_setattr_post
177126326Sjhb
178126326Sjhbvop_setattr {
179129241Sbde	IN struct vnode *vp;
180129241Sbde	IN struct vattr *vap;
181126326Sjhb	IN struct ucred *cred;
182126326Sjhb};
183126326Sjhb
184126326Sjhb%% markatime	vp	L L L
185167387Sjhb
186167387Sjhbvop_markatime {
187126326Sjhb	IN struct vnode *vp;
188126326Sjhb};
189126326Sjhb
190177085Sjeff%% read		vp	L L L
191126326Sjhb
192308470Skibvop_read {
193126326Sjhb	IN struct vnode *vp;
194248186Smav	INOUT struct uio *uio;
195248186Smav	IN int ioflag;
196247787Sdavide	IN struct ucred *cred;
197166908Sjhb};
198247787Sdavide
199155932Sdavidxu
200247787Sdavide%% write	vp	L L L
201155932Sdavidxu%! write	pre	VOP_WRITE_PRE
202136445Sjhb%! write	post	VOP_WRITE_POST
203167387Sjhb
204173601Sjulianvop_write {
205126326Sjhb	IN struct vnode *vp;
206183352Sjhb	INOUT struct uio *uio;
207183352Sjhb	IN int ioflag;
20888900Sjhb	IN struct ucred *cred;
209181394Sjhb};
210181394Sjhb
211167387Sjhb
212167387Sjhb%% ioctl	vp	U U U
213167387Sjhb
214167387Sjhbvop_ioctl {
215167387Sjhb	IN struct vnode *vp;
21641971Sdillon	IN u_long command;
2171541Srgrimes	IN void *data;
2181541Srgrimes	IN int fflag;
219126326Sjhb	IN struct ucred *cred;
220126326Sjhb	IN struct thread *td;
221126326Sjhb};
222126326Sjhb
223126326Sjhb
224126326Sjhb%% poll		vp	U U U
2251541Srgrimes
226247787Sdavidevop_poll {
227247787Sdavide	IN struct vnode *vp;
228247787Sdavide	IN int events;
229169392Sjhb	IN struct ucred *cred;
230169392Sjhb	IN struct thread *td;
231169392Sjhb};
232169392Sjhb
233169392Sjhb
234169392Sjhb%% kqfilter	vp	U U U
235247787Sdavide
236177085Sjeffvop_kqfilter {
237247787Sdavide	IN struct vnode *vp;
238177085Sjeff	IN struct knote *kn;
239126326Sjhb};
240177085Sjeff
241126326Sjhb
242177085Sjeff%% revoke	vp	L L L
243126326Sjhb
24478638Sjhbvop_revoke {
2451541Srgrimes	IN struct vnode *vp;
24697995Sjhb	IN int flags;
247234494Sjhb};
2481541Srgrimes
24997995Sjhb
250181394Sjhb%% fsync	vp	L L L
251167387Sjhb
252167387Sjhbvop_fsync {
25365708Sjake	IN struct vnode *vp;
25465557Sjasone	IN int waitfor;
2551541Srgrimes	IN struct thread *td;
2561541Srgrimes};
257153855Sjhb
258247787Sdavide
259247787Sdavide%% remove	dvp	E E E
260153855Sjhb%% remove	vp	E E E
261153855Sjhb%! remove	post	vop_remove_post
262153855Sjhb
263153855Sjhbvop_remove {
264153855Sjhb	IN struct vnode *dvp;
265153855Sjhb	IN struct vnode *vp;
266153855Sjhb	IN struct componentname *cnp;
267153855Sjhb};
268153855Sjhb
269153855Sjhb
270153855Sjhb%% link		tdvp	E E E
271153855Sjhb%% link		vp	E E E
272228424Savg%! link		post	vop_link_post
273153855Sjhb
274153855Sjhbvop_link {
275153855Sjhb	IN struct vnode *tdvp;
276153855Sjhb	IN struct vnode *vp;
277153855Sjhb	IN struct componentname *cnp;
278153855Sjhb};
279153855Sjhb
280153855Sjhb
281153855Sjhb%! rename	pre	vop_rename_pre
282153855Sjhb%! rename	post	vop_rename_post
283153855Sjhb
284153855Sjhbvop_rename {
285167089Sjhb	IN WILLRELE struct vnode *fdvp;
286173601Sjulian	IN WILLRELE struct vnode *fvp;
287153855Sjhb	IN struct componentname *fcnp;
288153855Sjhb	IN WILLRELE struct vnode *tdvp;
289153855Sjhb	IN WILLRELE struct vnode *tvp;
290167787Sjhb	IN struct componentname *tcnp;
291153855Sjhb};
292153855Sjhb
293153855Sjhb
294153855Sjhb%% mkdir	dvp	E E E
295153855Sjhb%% mkdir	vpp	- E -
296167787Sjhb%! mkdir	post	vop_mkdir_post
297247787Sdavide
298247787Sdavidevop_mkdir {
299153855Sjhb	IN struct vnode *dvp;
300153855Sjhb	OUT struct vnode **vpp;
301153855Sjhb	IN struct componentname *cnp;
302153855Sjhb	IN struct vattr *vap;
303153855Sjhb};
304153855Sjhb
305153855Sjhb
306153855Sjhb%% rmdir	dvp	E E E
307153855Sjhb%% rmdir	vp	E E E
308153855Sjhb%! rmdir	post	vop_rmdir_post
309153855Sjhb
310234494Sjhbvop_rmdir {
311153855Sjhb	IN struct vnode *dvp;
312153855Sjhb	IN struct vnode *vp;
313153855Sjhb	IN struct componentname *cnp;
314153855Sjhb};
315153855Sjhb
316153855Sjhb
317153855Sjhb%% symlink	dvp	E E E
318153855Sjhb%% symlink	vpp	- E -
319153855Sjhb%! symlink	post	vop_symlink_post
320247787Sdavide
321177085Sjeffvop_symlink {
322153855Sjhb	IN struct vnode *dvp;
323177085Sjeff	OUT struct vnode **vpp;
324153855Sjhb	IN struct componentname *cnp;
325153855Sjhb	IN struct vattr *vap;
326153855Sjhb	IN char *target;
327153855Sjhb};
328234494Sjhb
329153855Sjhb
330153855Sjhb%% readdir	vp	L L L
331153855Sjhb
332167787Sjhbvop_readdir {
333153855Sjhb	IN struct vnode *vp;
334153855Sjhb	INOUT struct uio *uio;
335153855Sjhb	IN struct ucred *cred;
3361541Srgrimes	INOUT int *eofflag;
337337034Shselasky	OUT int *ncookies;
338337034Shselasky	INOUT u_long **cookies;
339337034Shselasky};
340337034Shselasky
341337034Shselasky
342166908Sjhb%% readlink	vp	L L L
343166908Sjhb
344247787Sdavidevop_readlink {
345166908Sjhb	IN struct vnode *vp;
346337034Shselasky	INOUT struct uio *uio;
347166908Sjhb	IN struct ucred *cred;
348227748Shselasky};
349247787Sdavide
350247787Sdavide
351227706Shselasky%% inactive	vp	E E E
352301261Shselasky
353227706Shselaskyvop_inactive {
354247787Sdavide	IN struct vnode *vp;
355227748Shselasky	IN struct thread *td;
356227706Shselasky};
357255067Shselasky
358227706Shselasky
359255067Shselasky%% reclaim	vp	E E E
360227706Shselasky
361255067Shselaskyvop_reclaim {
362255067Shselasky	IN struct vnode *vp;
363255067Shselasky	IN struct thread *td;
364255067Shselasky};
365337035Shselasky
366227706Shselasky
367337034Shselasky%! lock1	pre	vop_lock_pre
368337034Shselasky%! lock1	post	vop_lock_post
369166908Sjhb
370166908Sjhbvop_lock1 {
371166908Sjhb	IN struct vnode *vp;
372129241Sbde	IN int flags;
3731541Srgrimes	IN char *file;
3741541Srgrimes	IN int line;
375177272Srwatson};
37617366Sdg
377181334Sjhb
3781541Srgrimes%! unlock	pre	vop_unlock_pre
379136445Sjhb%! unlock	post	vop_unlock_post
380181334Sjhb
381177085Sjeffvop_unlock {
382195700Skib	IN struct vnode *vp;
383195700Skib	IN int flags;
384195700Skib};
385181334Sjhb
386195700Skib
3871541Srgrimes%% bmap		vp	L L L
3881541Srgrimes
3891541Srgrimesvop_bmap {
390129241Sbde	IN struct vnode *vp;
391129241Sbde	IN daddr_t bn;
39279343Sjake	OUT struct bufobj **bop;
3931541Srgrimes	IN daddr_t *bnp;
3941541Srgrimes	OUT int *runp;
395177272Srwatson	OUT int *runb;
3961541Srgrimes};
397181334Sjhb
3981541Srgrimes
399136445Sjhb%% strategy	vp	L L L
400181334Sjhb%! strategy	pre	vop_strategy_pre
401170294Sjeff
402181334Sjhbvop_strategy {
403181334Sjhb	IN struct vnode *vp;
4041541Srgrimes	IN struct buf *bp;
4051541Srgrimes};
406177010Sjeff
407177010Sjeff
408177010Sjeff%% getwritemount vp	= = =
409177010Sjeff
410177010Sjeffvop_getwritemount {
411177010Sjeff	IN struct vnode *vp;
412177010Sjeff	OUT struct mount **mpp;
413177010Sjeff};
414177010Sjeff
4151541Srgrimes
416129241Sbde%% print	vp	- - -
4171541Srgrimes
4181541Srgrimesvop_print {
419131473Sjhb	IN struct vnode *vp;
4201541Srgrimes};
421175219Srwatson
422112993Speter
4231541Srgrimes%% pathconf	vp	L L L
424112993Speter
425170294Sjeffvop_pathconf {
426103216Sjulian	IN struct vnode *vp;
42785368Sjhb	IN int name;
428114750Sjhb	OUT register_t *retval;
42985368Sjhb};
43085368Sjhb
431222252Sjhb
432100210Sjhb%% advlock	vp	U U U
433124944Sjeff
434124944Sjeffvop_advlock {
435132266Sjhb	IN struct vnode *vp;
43665557Sjasone	IN void *id;
437159205Sjhb	IN int op;
438159205Sjhb	IN struct flock *fl;
439159205Sjhb	IN int flags;
440177010Sjeff};
441177010Sjeff
442228424Savg
443228424Savg%% advlockasync	vp	U U U
444218424Smdf
445170174Sjeffvop_advlockasync {
446218424Smdf	IN struct vnode *vp;
447218424Smdf	IN void *id;
448170174Sjeff	IN int op;
449178272Sjeff	IN struct flock *fl;
450178272Sjeff	IN int flags;
451178272Sjeff	IN struct task *task;	
4521541Srgrimes	INOUT void **cookiep;
4531541Srgrimes};
454170174Sjeff
4551541Srgrimes
456155444Sphk%% advlockpurge	vp	E E E
457175219Srwatson
458175219Srwatsonvop_advlockpurge {
459175219Srwatson	IN struct vnode *vp;
460170174Sjeff};
461120802Sbms
462170292Sattilio
463121688Sbde%% reallocblks	vp	E E E
464177091Sjeff
465284021Skibvop_reallocblks {
466316843Savg	IN struct vnode *vp;
467316843Savg	IN struct cluster_save *buflist;
468316843Savg};
469316843Savg
470316843Savg
471184042Skmacy%% getpages	vp	L L L
472184042Skmacy
473184042Skmacyvop_getpages {
474135051Sjulian	IN struct vnode *vp;
475177091Sjeff	IN vm_page_t *m;
476284021Skib	IN int count;
477121688Sbde	IN int reqpage;
478107719Sjulian	IN vm_ooffset_t offset;
479107719Sjulian};
480107719Sjulian
481107719Sjulian
482107719Sjulian%% putpages	vp	E E E
483107719Sjulian
484107719Sjulianvop_putpages {
4851541Srgrimes	IN struct vnode *vp;
4861541Srgrimes	IN vm_page_t *m;
4871541Srgrimes	IN int count;
488181334Sjhb	IN int sync;
489181334Sjhb	IN int *rtvals;
490181334Sjhb	IN vm_ooffset_t offset;
4911541Srgrimes};
492181334Sjhb
49383366Sjulian
4941541Srgrimes%% getacl	vp	L L L
49583786Sjhb
496170294Sjeffvop_getacl {
497172207Sjeff	IN struct vnode *vp;
498172207Sjeff	IN acl_type_t type;
49999072Sjulian	OUT struct acl *aclp;
50099072Sjulian	IN struct ucred *cred;
501103216Sjulian	IN struct thread *td;
502181334Sjhb};
503103216Sjulian
504103216Sjulian
505103216Sjulian%% setacl	vp	E E E
506103216Sjulian
507103216Sjulianvop_setacl {
508103216Sjulian	IN struct vnode *vp;
509181334Sjhb	IN acl_type_t type;
510181334Sjhb	IN struct acl *aclp;
511103216Sjulian	IN struct ucred *cred;
512103216Sjulian	IN struct thread *td;
5131541Srgrimes};
514103216Sjulian
51583366Sjulian
5161541Srgrimes%% aclcheck	vp	= = =
517172207Sjeff
518172207Sjeffvop_aclcheck {
519172207Sjeff	IN struct vnode *vp;
520181334Sjhb	IN acl_type_t type;
521100913Stanimura	IN struct acl *aclp;
522104964Sjeff	IN struct ucred *cred;
523104964Sjeff	IN struct thread *td;
524181334Sjhb};
5251541Srgrimes
5261541Srgrimes
5271541Srgrimes%% closeextattr	vp	L L L
52885227Siedowse
52985227Siedowsevop_closeextattr {
53085227Siedowse	IN struct vnode *vp;
53185227Siedowse	IN int commit;
532125292Sjeff	IN struct ucred *cred;
53385227Siedowse	IN struct thread *td;
53485227Siedowse};
53585237Siedowse
53685227Siedowse
537125290Sjeff%% getextattr	vp	L L L
53885237Siedowse
539125290Sjeffvop_getextattr {
54085227Siedowse	IN struct vnode *vp;
54185227Siedowse	IN int attrnamespace;
54285227Siedowse	IN const char *name;
54385237Siedowse	INOUT struct uio *uio;
544125292Sjeff	OUT size_t *size;
545125292Sjeff	IN struct ucred *cred;
546125292Sjeff	IN struct thread *td;
547125292Sjeff};
548125292Sjeff
549247778Sdavide
550255835Smav%% listextattr	vp	L L L
551255835Smav
55285227Siedowsevop_listextattr {
55385227Siedowse	IN struct vnode *vp;
55431403Sjulian	IN int attrnamespace;
55531403Sjulian	INOUT struct uio *uio;
556177272Srwatson	OUT size_t *size;
55731403Sjulian	IN struct ucred *cred;
558314667Savg	IN struct thread *td;
55969286Sjake};
56031403Sjulian
561125292Sjeff
56231403Sjulian%% openextattr	vp	L L L
56331403Sjulian
564218424Smdfvop_openextattr {
565218424Smdf	IN struct vnode *vp;
566218424Smdf	IN struct ucred *cred;
567218424Smdf	IN struct thread *td;
568260737Savg};
569218424Smdf
570218424Smdf
571218424Smdf%% deleteextattr	vp	E E E
572218424Smdf
573218424Smdfvop_deleteextattr {
574218424Smdf	IN struct vnode *vp;
575218424Smdf	IN int attrnamespace;
576221829Smdf	IN const char *name;
577218424Smdf	IN struct ucred *cred;
578218424Smdf	IN struct thread *td;
579218424Smdf};
580218424Smdf
581218424Smdf
582218424Smdf%% setextattr	vp	E E E
583218424Smdf
584218424Smdfvop_setextattr {
585218424Smdf	IN struct vnode *vp;
586218424Smdf	IN int attrnamespace;
587221829Smdf	IN const char *name;
588221829Smdf	INOUT struct uio *uio;
589218424Smdf	IN struct ucred *cred;
590218424Smdf	IN struct thread *td;
591218424Smdf};
592218424Smdf
593218424Smdf
594218424Smdf%% setlabel	vp	E E E
595218424Smdf
59653745Sbdevop_setlabel {
597167232Srwatson	IN struct vnode *vp;
59869512Sjake	IN struct label *label;
59969512Sjake	IN struct ucred *cred;
600225617Skmacy	IN struct thread *td;
60169512Sjake};
602172482Sjeff
603172482Sjeff
604217077Sjhb%% vptofh	vp	= = =
605217077Sjhb
606178272Sjeffvop_vptofh {
607172482Sjeff	IN struct vnode *vp;
608172482Sjeff	IN struct fid *fhp;
60969512Sjake};
61069512Sjake
611%% vptocnp		vp	L L L
612%% vptocnp		vpp	- U -
613
614vop_vptocnp {
615	IN struct vnode *vp;
616	OUT struct vnode **vpp;
617	IN struct ucred *cred;
618	INOUT char *buf;
619	INOUT int *buflen;
620};
621