vnode_if.src revision 102990
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# 3. All advertising materials mentioning features or use of this software
141541Srgrimes#    must display the following acknowledgement:
151541Srgrimes#	This product includes software developed by the University of
161541Srgrimes#	California, Berkeley and its contributors.
171541Srgrimes# 4. Neither the name of the University nor the names of its contributors
181541Srgrimes#    may be used to endorse or promote products derived from this software
191541Srgrimes#    without specific prior written permission.
201541Srgrimes#
211541Srgrimes# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
221541Srgrimes# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
231541Srgrimes# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
241541Srgrimes# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
251541Srgrimes# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
261541Srgrimes# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
271541Srgrimes# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
281541Srgrimes# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
291541Srgrimes# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
301541Srgrimes# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
311541Srgrimes# SUCH DAMAGE.
321541Srgrimes#
3322521Sdyson#	@(#)vnode_if.src	8.12 (Berkeley) 5/14/95
3450477Speter# $FreeBSD: head/sys/kern/vnode_if.src 102990 2002-09-05 20:56:14Z phk $
351541Srgrimes#
3622521Sdyson
3722521Sdyson#
3822521Sdyson# Above each of the vop descriptors is a specification of the locking
3922521Sdyson# protocol used by each vop call.  The first column is the name of
4022521Sdyson# the variable, the remaining three columns are in, out and error
4122521Sdyson# respectively.  The "in" column defines the lock state on input,
4222521Sdyson# the "out" column defines the state on succesful return, and the
4322521Sdyson# "error" column defines the locking state on error exit.
4422521Sdyson#
4522521Sdyson# The locking value can take the following values:
4654444Seivind# L: locked; not converted to type of lock.
4754444Seivind# A: any lock type.
4854444Seivind# S: locked with shared lock.
4954444Seivind# E: locked with exclusive lock for this process.
5054444Seivind# O: locked with exclusive lock for other process.
5145058Seivind# U: unlocked.
5222521Sdyson# -: not applicable.  vnode does not yet (or no longer) exists.
5322521Sdyson# =: the same on input and output, may be either L or U.
5422521Sdyson# X: locked if not nil.
5522521Sdyson#
5622521Sdyson
5722521Sdyson#
5851679Seivind#% islocked	vp	= = =
5951679Seivind#
6051679Seivindvop_islocked {
6151679Seivind	IN struct vnode *vp;
6283366Sjulian	IN struct thread *td;
6351679Seivind};
6451679Seivind
6551679Seivind#
6699691Sjeff# lookup	dvp	L ? ?
6799691Sjeff# lookup	vpp	- L -
6899691Sjeff#! lookup	pre	vop_lookup_pre
6999691Sjeff#! lookup	post	vop_lookup_post
7022521Sdyson#
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.
7422521Sdyson#
751541Srgrimesvop_lookup {
761541Srgrimes	IN struct vnode *dvp;
771541Srgrimes	INOUT struct vnode **vpp;
781541Srgrimes	IN struct componentname *cnp;
791541Srgrimes};
801541Srgrimes
8122521Sdyson#
8228732Sphk#% cachedlookup	dvp	L ? ?
8328732Sphk#% cachedlookup	vpp	- L -
8428732Sphk#
8528732Sphk# This must be an exact copy of lookup.  See kern/vfs_cache.c for details.
8628732Sphk#
8728732Sphkvop_cachedlookup {
8828732Sphk	IN struct vnode *dvp;
8928732Sphk	INOUT struct vnode **vpp;
9028732Sphk	IN struct componentname *cnp;
9128732Sphk};
9228732Sphk
9328732Sphk#
9435823Smsmith#% create	dvp	L L L
9522521Sdyson#% create	vpp	- L -
9622521Sdyson#
971541Srgrimesvop_create {
9835823Smsmith	IN struct vnode *dvp;
991541Srgrimes	OUT struct vnode **vpp;
1001541Srgrimes	IN struct componentname *cnp;
1011541Srgrimes	IN struct vattr *vap;
1021541Srgrimes};
1031541Srgrimes
10422521Sdyson#
10522521Sdyson#% whiteout	dvp	L L L
10622521Sdyson#
10722521Sdysonvop_whiteout {
10835823Smsmith	IN struct vnode *dvp;
10922521Sdyson	IN struct componentname *cnp;
11022521Sdyson	IN int flags;
11122521Sdyson};
11222521Sdyson
11322521Sdyson#
11435823Smsmith#% mknod	dvp	L L L
11580295Sassar#% mknod	vpp	- L -
11622521Sdyson#
1171541Srgrimesvop_mknod {
11835823Smsmith	IN struct vnode *dvp;
11953101Seivind	OUT struct vnode **vpp;
1201541Srgrimes	IN struct componentname *cnp;
1211541Srgrimes	IN struct vattr *vap;
1221541Srgrimes};
1231541Srgrimes
12422521Sdyson#
12522521Sdyson#% open		vp	L L L
12622521Sdyson#
1271541Srgrimesvop_open {
1281541Srgrimes	IN struct vnode *vp;
1291541Srgrimes	IN int mode;
1301541Srgrimes	IN struct ucred *cred;
13183366Sjulian	IN struct thread *td;
1321541Srgrimes};
1331541Srgrimes
13422521Sdyson#
13522521Sdyson#% close	vp	U U U
13622521Sdyson#
1371541Srgrimesvop_close {
1381541Srgrimes	IN struct vnode *vp;
1391541Srgrimes	IN int fflag;
1401541Srgrimes	IN struct ucred *cred;
14183366Sjulian	IN struct thread *td;
1421541Srgrimes};
1431541Srgrimes
14422521Sdyson#
14522521Sdyson#% access	vp	L L L
14622521Sdyson#
1471541Srgrimesvop_access {
1481541Srgrimes	IN struct vnode *vp;
1491541Srgrimes	IN int mode;
1501541Srgrimes	IN struct ucred *cred;
15183366Sjulian	IN struct thread *td;
1521541Srgrimes};
1531541Srgrimes
15422521Sdyson#
15599554Sjeff#% getattr	vp	L L L
15622521Sdyson#
1571541Srgrimesvop_getattr {
1581541Srgrimes	IN struct vnode *vp;
15954803Srwatson	OUT struct vattr *vap;
1601541Srgrimes	IN struct ucred *cred;
16183366Sjulian	IN struct thread *td;
1621541Srgrimes};
1631541Srgrimes
16422521Sdyson#
16522521Sdyson#% setattr	vp	L L L
16622521Sdyson#
1671541Srgrimesvop_setattr {
1681541Srgrimes	IN struct vnode *vp;
1691541Srgrimes	IN struct vattr *vap;
1701541Srgrimes	IN struct ucred *cred;
17183366Sjulian	IN struct thread *td;
1721541Srgrimes};
1731541Srgrimes
17422521Sdyson#
17522521Sdyson#% read		vp	L L L
17622521Sdyson#
1771541Srgrimesvop_read {
1781541Srgrimes	IN struct vnode *vp;
1791541Srgrimes	INOUT struct uio *uio;
1801541Srgrimes	IN int ioflag;
1811541Srgrimes	IN struct ucred *cred;
1821541Srgrimes};
1831541Srgrimes
18422521Sdyson#
18522521Sdyson#% write	vp	L L L
18622521Sdyson#
1871541Srgrimesvop_write {
1881541Srgrimes	IN struct vnode *vp;
1891541Srgrimes	INOUT struct uio *uio;
1901541Srgrimes	IN int ioflag;
1911541Srgrimes	IN struct ucred *cred;
1921541Srgrimes};
1931541Srgrimes
19422521Sdyson#
19522521Sdyson#% lease	vp	= = =
19622521Sdyson#
19722521Sdysonvop_lease {
19822521Sdyson	IN struct vnode *vp;
19983366Sjulian	IN struct thread *td;
20022521Sdyson	IN struct ucred *cred;
20122521Sdyson	IN int flag;
20222521Sdyson};
20322521Sdyson
20422521Sdyson#
20522521Sdyson#% ioctl	vp	U U U
20622521Sdyson#
2071541Srgrimesvop_ioctl {
2081541Srgrimes	IN struct vnode *vp;
20922521Sdyson	IN u_long command;
2101541Srgrimes	IN caddr_t data;
2111541Srgrimes	IN int fflag;
2121541Srgrimes	IN struct ucred *cred;
21383366Sjulian	IN struct thread *td;
2141541Srgrimes};
2151541Srgrimes
21622521Sdyson#
21729353Speter#% poll	vp	U U U
21822521Sdyson#
21929353Spetervop_poll {
2201541Srgrimes	IN struct vnode *vp;
22129353Speter	IN int events;
2221541Srgrimes	IN struct ucred *cred;
22383366Sjulian	IN struct thread *td;
2241541Srgrimes};
2251541Srgrimes
22622521Sdyson#
22772521Sjlemon#% kqfilter	vp	U U U
22872521Sjlemon#
22972521Sjlemonvop_kqfilter {
23072521Sjlemon	IN struct vnode *vp;
23172521Sjlemon	IN struct knote *kn;
23272521Sjlemon};
23372521Sjlemon
23472521Sjlemon#
23522521Sdyson#% revoke	vp	U U U
23622521Sdyson#
23722521Sdysonvop_revoke {
23822521Sdyson	IN struct vnode *vp;
23922521Sdyson	IN int flags;
24022521Sdyson};
24122521Sdyson
24222521Sdyson#
24322521Sdyson#% fsync	vp	L L L
24422521Sdyson#
2451541Srgrimesvop_fsync {
2461541Srgrimes	IN struct vnode *vp;
2471541Srgrimes	IN struct ucred *cred;
2481541Srgrimes	IN int waitfor;
24983366Sjulian	IN struct thread *td;
2501541Srgrimes};
2511541Srgrimes
25222521Sdyson#
25335823Smsmith#% remove	dvp	L L L
25435823Smsmith#% remove	vp	L L L
25522521Sdyson#
2561541Srgrimesvop_remove {
25735823Smsmith	IN struct vnode *dvp;
25835823Smsmith	IN struct vnode *vp;
2591541Srgrimes	IN struct componentname *cnp;
2601541Srgrimes};
2611541Srgrimes
26222521Sdyson#
26335823Smsmith#% link		tdvp	L L L
26422521Sdyson#% link		vp	U U U
26522521Sdyson#
2669842Sdgvop_link {
26735823Smsmith	IN struct vnode *tdvp;
2689842Sdg	IN struct vnode *vp;
2699842Sdg	IN struct componentname *cnp;
2709842Sdg};
2711541Srgrimes
27222521Sdyson#
27399484Sjeff# rename	fdvp	U U U
27499484Sjeff# rename	fvp	U U U
27599484Sjeff# rename	tdvp	L U U
27699484Sjeff# rename	tvp	X U U
27799484Sjeff#! rename	pre	vop_rename_pre
27822521Sdyson#
2791541Srgrimesvop_rename {
2801541Srgrimes	IN WILLRELE struct vnode *fdvp;
2811541Srgrimes	IN WILLRELE struct vnode *fvp;
2821541Srgrimes	IN struct componentname *fcnp;
2831541Srgrimes	IN WILLRELE struct vnode *tdvp;
2841541Srgrimes	IN WILLRELE struct vnode *tvp;
2851541Srgrimes	IN struct componentname *tcnp;
2861541Srgrimes};
2871541Srgrimes
28822521Sdyson#
28935823Smsmith#% mkdir	dvp	L L L
29022521Sdyson#% mkdir	vpp	- L -
29122521Sdyson#
2921541Srgrimesvop_mkdir {
29335823Smsmith	IN struct vnode *dvp;
2941541Srgrimes	OUT struct vnode **vpp;
2951541Srgrimes	IN struct componentname *cnp;
2961541Srgrimes	IN struct vattr *vap;
2971541Srgrimes};
2981541Srgrimes
29922521Sdyson#
30035823Smsmith#% rmdir	dvp	L L L
30135823Smsmith#% rmdir	vp	L L L
30222521Sdyson#
3031541Srgrimesvop_rmdir {
30435823Smsmith	IN struct vnode *dvp;
30535823Smsmith	IN struct vnode *vp;
3061541Srgrimes	IN struct componentname *cnp;
3071541Srgrimes};
3081541Srgrimes
30922521Sdyson#
31035823Smsmith#% symlink	dvp	L L L
31180295Sassar#% symlink	vpp	- L -
31222521Sdyson#
3131541Srgrimesvop_symlink {
31435823Smsmith	IN struct vnode *dvp;
31553131Seivind	OUT struct vnode **vpp;
3161541Srgrimes	IN struct componentname *cnp;
3171541Srgrimes	IN struct vattr *vap;
3181541Srgrimes	IN char *target;
3191541Srgrimes};
3201541Srgrimes
32122521Sdyson#
32222521Sdyson#% readdir	vp	L L L
32322521Sdyson#
3241541Srgrimesvop_readdir {
3251541Srgrimes	IN struct vnode *vp;
3261541Srgrimes	INOUT struct uio *uio;
3271541Srgrimes	IN struct ucred *cred;
3283167Sdfr	INOUT int *eofflag;
32922521Sdyson	OUT int *ncookies;
33022521Sdyson	INOUT u_long **cookies;
3311541Srgrimes};
3321541Srgrimes
33322521Sdyson#
33422521Sdyson#% readlink	vp	L L L
33522521Sdyson#
3361541Srgrimesvop_readlink {
3371541Srgrimes	IN struct vnode *vp;
3381541Srgrimes	INOUT struct uio *uio;
3391541Srgrimes	IN struct ucred *cred;
3401541Srgrimes};
3411541Srgrimes
34222521Sdyson#
34322521Sdyson#% inactive	vp	L U U
34422521Sdyson#
3451541Srgrimesvop_inactive {
3461541Srgrimes	IN struct vnode *vp;
34783366Sjulian	IN struct thread *td;
3481541Srgrimes};
3491541Srgrimes
35022521Sdyson#
35122521Sdyson#% reclaim	vp	U U U
35222521Sdyson#
3531541Srgrimesvop_reclaim {
3541541Srgrimes	IN struct vnode *vp;
35583366Sjulian	IN struct thread *td;
3561541Srgrimes};
3571541Srgrimes
35822521Sdyson#
359102210Sjeff#lock		vp	? ? ?
360102210Sjeff#! lock		pre	vop_lock_pre
361102210Sjeff#! lock		post	vop_lock_post
36222521Sdyson#
3631541Srgrimesvop_lock {
3641541Srgrimes	IN struct vnode *vp;
36522521Sdyson	IN int flags;
36683366Sjulian	IN struct thread *td;
3671541Srgrimes};
3681541Srgrimes
36922521Sdyson#
370102210Sjeff#unlock		vp	L ? L
371102210Sjeff#! unlock	pre	vop_unlock_pre
372102210Sjeff#! unlock	post	vop_unlock_post
37322521Sdyson#
3741541Srgrimesvop_unlock {
3751541Srgrimes	IN struct vnode *vp;
37622521Sdyson	IN int flags;
37783366Sjulian	IN struct thread *td;
3781541Srgrimes};
3791541Srgrimes
38022521Sdyson#
38122521Sdyson#% bmap		vp	L L L
38222521Sdyson#% bmap		vpp	- U -
38322521Sdyson#
3841541Srgrimesvop_bmap {
3851541Srgrimes	IN struct vnode *vp;
38696572Sphk	IN daddr_t bn;
3871541Srgrimes	OUT struct vnode **vpp;
38896572Sphk	IN daddr_t *bnp;
3891541Srgrimes	OUT int *runp;
39010551Sdyson	OUT int *runb;
3911541Srgrimes};
3921541Srgrimes
39322521Sdyson#
39499486Sjeff# strategy	vp	L L L
39599486Sjeff#! strategy	pre	vop_strategy_pre
39622521Sdyson#
39737384Sjulianvop_strategy {
39837384Sjulian	IN struct vnode *vp;
39937384Sjulian	IN struct buf *bp;
40037384Sjulian};
4011541Srgrimes
40222521Sdyson#
40362976Smckusick#% getwritemount vp	= = =
40462976Smckusick#
40562976Smckusickvop_getwritemount {
40662976Smckusick	IN struct vnode *vp;
40762976Smckusick	OUT struct mount **mpp;
40862976Smckusick};
40962976Smckusick
41062976Smckusick#
41122521Sdyson#% print	vp	= = =
41222521Sdyson#
4131541Srgrimesvop_print {
4141541Srgrimes	IN struct vnode *vp;
4151541Srgrimes};
4161541Srgrimes
41722521Sdyson#
41822521Sdyson#% pathconf	vp	L L L
41922521Sdyson#
4201541Srgrimesvop_pathconf {
4211541Srgrimes	IN struct vnode *vp;
4221541Srgrimes	IN int name;
42322521Sdyson	OUT register_t *retval;
4241541Srgrimes};
4251541Srgrimes
42622521Sdyson#
42722521Sdyson#% advlock	vp	U U U
42822521Sdyson#
4291541Srgrimesvop_advlock {
4301541Srgrimes	IN struct vnode *vp;
4311541Srgrimes	IN caddr_t id;
4321541Srgrimes	IN int op;
4331541Srgrimes	IN struct flock *fl;
4341541Srgrimes	IN int flags;
4351541Srgrimes};
4361541Srgrimes
43722521Sdyson#
43822521Sdyson#% reallocblks	vp	L L L
43922521Sdyson#
4401541Srgrimesvop_reallocblks {
4411541Srgrimes	IN struct vnode *vp;
4421541Srgrimes	IN struct cluster_save *buflist;
4431541Srgrimes};
4441541Srgrimes
44545058Seivind#
44645058Seivind#% getpages	vp	L L L
44745058Seivind#
44810551Sdysonvop_getpages {
44910551Sdyson	IN struct vnode *vp;
45010551Sdyson	IN vm_page_t *m;
45110551Sdyson	IN int count;
45210551Sdyson	IN int reqpage;
45312767Sdyson	IN vm_ooffset_t offset;
45410551Sdyson};
45510551Sdyson
45645058Seivind#
45745058Seivind#% putpages	vp	L L L
45845058Seivind#
45910551Sdysonvop_putpages {
46010551Sdyson	IN struct vnode *vp;
46110551Sdyson	IN vm_page_t *m;
46210551Sdyson	IN int count;
46310551Sdyson	IN int sync;
46410551Sdyson	IN int *rtvals;
46512767Sdyson	IN vm_ooffset_t offset;
46610551Sdyson};
46711704Sdyson
46822521Sdyson#
46938862Sphk#% freeblks	vp	- - -
47038862Sphk#
47138862Sphk# This call is used by the filesystem to release blocks back to 
47238862Sphk# device-driver.  This is useful if the driver has a lengthy 
47338862Sphk# erase handling or similar.
47438862Sphk#
47538862Sphk
47638862Sphkvop_freeblks {
47738862Sphk	IN struct vnode *vp;
47838862Sphk	IN daddr_t addr;
47938862Sphk	IN daddr_t length;
48038862Sphk};
48138862Sphk
48238862Sphk#
48366184Srwatson#% getacl	vp	L L L
48454803Srwatson#
48554803Srwatsonvop_getacl {
48654803Srwatson	IN struct vnode *vp;
48754803Srwatson	IN acl_type_t type;
48854803Srwatson	OUT struct acl *aclp;
48954803Srwatson	IN struct ucred *cred;
49083366Sjulian	IN struct thread *td;
49154803Srwatson};
49254803Srwatson
49354803Srwatson#
49454803Srwatson#% setacl	vp	L L L
49554803Srwatson#
49654803Srwatsonvop_setacl {
49754803Srwatson	IN struct vnode *vp;
49854803Srwatson	IN acl_type_t type;
49954803Srwatson	IN struct acl *aclp;
50054803Srwatson	IN struct ucred *cred;
50183366Sjulian	IN struct thread *td;
50254803Srwatson};
50354803Srwatson
50454803Srwatson#
50554803Srwatson#% aclcheck	vp	= = =
50654803Srwatson#
50754803Srwatsonvop_aclcheck {
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
51554803Srwatson#
516102990Sphk#% closeextattr	vp	L L L
517102990Sphk#
518102990Sphkvop_closeextattr {
519102990Sphk	IN struct vnode *vp;
520102990Sphk	IN int commit;
521102990Sphk	IN struct ucred *cred;
522102990Sphk	IN struct thread *td;
523102990Sphk};
524102990Sphk
525102990Sphk#
52663893Srwatson#% getextattr	vp	L L L
52754803Srwatson#
52854803Srwatsonvop_getextattr {
52954803Srwatson	IN struct vnode *vp;
53074437Srwatson	IN int attrnamespace;
53165119Srwatson	IN const char *name;
53254803Srwatson	INOUT struct uio *uio;
53390448Srwatson	OUT size_t *size;
53454803Srwatson	IN struct ucred *cred;
53583366Sjulian	IN struct thread *td;
53654803Srwatson};
53754803Srwatson
53854803Srwatson#
539102990Sphk#% openextattr	vp	L L L
540102990Sphk#
541102990Sphkvop_openextattr {
542102990Sphk	IN struct vnode *vp;
543102990Sphk	IN struct ucred *cred;
544102990Sphk	IN struct thread *td;
545102990Sphk};
546102990Sphk
547102990Sphk#
54854803Srwatson#% setextattr	vp	L L L
54954803Srwatson#
55054803Srwatsonvop_setextattr {
55154803Srwatson	IN struct vnode *vp;
55274437Srwatson	IN int attrnamespace;
55365119Srwatson	IN const char *name;
55454803Srwatson	INOUT struct uio *uio;
55554803Srwatson	IN struct ucred *cred;
55683366Sjulian	IN struct thread *td;
55754803Srwatson};
55865770Sbp
55965770Sbp#
56065770Sbp#% createvobject	vp	L L L
56165770Sbp#
56265770Sbpvop_createvobject {
56365770Sbp	IN struct vnode *vp;
56465770Sbp	IN struct ucred *cred;
56583366Sjulian	IN struct thread *td;
56665770Sbp};
56765770Sbp
56865770Sbp#
56965770Sbp#% destroyvobject	vp	L L L
57065770Sbp#
57165770Sbpvop_destroyvobject {
57265770Sbp	IN struct vnode *vp;
57365770Sbp};
57465770Sbp
57565770Sbp#
57665770Sbp#% getvobject	vp	L L L
57765770Sbp#
57865770Sbpvop_getvobject {
57965770Sbp	IN struct vnode *vp;
58065770Sbp	OUT struct vm_object **objpp;
58165770Sbp};
582100984Srwatson
583100984Srwatson#
584100984Srwatson#% refreshlabel	vp	L L L
585100984Srwatson#
586100984Srwatsonvop_refreshlabel {
587100984Srwatson	IN struct vnode *vp;
588100984Srwatson	IN struct ucred *cred;
589100984Srwatson	IN struct thread *td;
590100984Srwatson};
591100984Srwatson
592100984Srwatson#
593100984Srwatson#% setlabel	vp	L L L
594100984Srwatson#
595100984Srwatsonvop_setlabel {
596100984Srwatson	IN struct vnode *vp;
597100984Srwatson	IN struct label *label;
598100984Srwatson	IN struct ucred *cred;
599100984Srwatson	IN struct thread *td;
600100984Srwatson};
601