vnode_if.src revision 116698
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 116698 2003-06-22 22:45:24Z rwatson $ 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# 56116615Sse# The paramater named "vpp" is assumed to be always used with double 57116615Sse# indirection (**vpp) and that name is hard-codeed in vnode_if.awk ! 58116615Sse# 59116615Sse# If other such parameters are introduced, they have to be added to 60116615Sse# the AWK script at the head of the definition of "add_debug_code()". 61116615Sse# 6222521Sdyson 6322521Sdyson# 64103980Sjeff# islocked vp = = = 6551679Seivind# 6651679Seivindvop_islocked { 6751679Seivind IN struct vnode *vp; 6883366Sjulian IN struct thread *td; 6951679Seivind}; 7051679Seivind 7151679Seivind# 7299691Sjeff# lookup dvp L ? ? 7399691Sjeff# lookup vpp - L - 7499691Sjeff#! lookup pre vop_lookup_pre 7599691Sjeff#! lookup post vop_lookup_post 7622521Sdyson# 7722521Sdyson# XXX - the lookup locking protocol defies simple description and depends 7822521Sdyson# on the flags and operation fields in the (cnp) structure. Note 7922521Sdyson# especially that *vpp may equal dvp and both may be locked. 8022521Sdyson# 811541Srgrimesvop_lookup { 821541Srgrimes IN struct vnode *dvp; 831541Srgrimes INOUT struct vnode **vpp; 841541Srgrimes IN struct componentname *cnp; 851541Srgrimes}; 861541Srgrimes 8722521Sdyson# 8828732Sphk#% cachedlookup dvp L ? ? 8928732Sphk#% cachedlookup vpp - L - 9028732Sphk# 9128732Sphk# This must be an exact copy of lookup. See kern/vfs_cache.c for details. 9228732Sphk# 9328732Sphkvop_cachedlookup { 9428732Sphk IN struct vnode *dvp; 9528732Sphk INOUT struct vnode **vpp; 9628732Sphk IN struct componentname *cnp; 9728732Sphk}; 9828732Sphk 9928732Sphk# 10035823Smsmith#% create dvp L L L 10122521Sdyson#% create vpp - L - 10222521Sdyson# 1031541Srgrimesvop_create { 10435823Smsmith IN struct vnode *dvp; 1051541Srgrimes OUT struct vnode **vpp; 1061541Srgrimes IN struct componentname *cnp; 1071541Srgrimes IN struct vattr *vap; 1081541Srgrimes}; 1091541Srgrimes 11022521Sdyson# 11122521Sdyson#% whiteout dvp L L L 11222521Sdyson# 11322521Sdysonvop_whiteout { 11435823Smsmith IN struct vnode *dvp; 11522521Sdyson IN struct componentname *cnp; 11622521Sdyson IN int flags; 11722521Sdyson}; 11822521Sdyson 11922521Sdyson# 12035823Smsmith#% mknod dvp L L L 12180295Sassar#% mknod vpp - L - 12222521Sdyson# 1231541Srgrimesvop_mknod { 12435823Smsmith IN struct vnode *dvp; 12553101Seivind OUT struct vnode **vpp; 1261541Srgrimes IN struct componentname *cnp; 1271541Srgrimes IN struct vattr *vap; 1281541Srgrimes}; 1291541Srgrimes 13022521Sdyson# 13122521Sdyson#% open vp L L L 13222521Sdyson# 1331541Srgrimesvop_open { 1341541Srgrimes IN struct vnode *vp; 1351541Srgrimes IN int mode; 1361541Srgrimes IN struct ucred *cred; 13783366Sjulian IN struct thread *td; 1381541Srgrimes}; 1391541Srgrimes 14022521Sdyson# 14122521Sdyson#% close vp U U U 14222521Sdyson# 1431541Srgrimesvop_close { 1441541Srgrimes IN struct vnode *vp; 1451541Srgrimes IN int fflag; 1461541Srgrimes IN struct ucred *cred; 14783366Sjulian IN struct thread *td; 1481541Srgrimes}; 1491541Srgrimes 15022521Sdyson# 15122521Sdyson#% access vp L L L 15222521Sdyson# 1531541Srgrimesvop_access { 1541541Srgrimes IN struct vnode *vp; 1551541Srgrimes IN int mode; 1561541Srgrimes IN struct ucred *cred; 15783366Sjulian IN struct thread *td; 1581541Srgrimes}; 1591541Srgrimes 16022521Sdyson# 16199554Sjeff#% getattr vp L L L 16222521Sdyson# 1631541Srgrimesvop_getattr { 1641541Srgrimes IN struct vnode *vp; 16554803Srwatson OUT struct vattr *vap; 1661541Srgrimes IN struct ucred *cred; 16783366Sjulian IN struct thread *td; 1681541Srgrimes}; 1691541Srgrimes 17022521Sdyson# 17122521Sdyson#% setattr vp L L L 17222521Sdyson# 1731541Srgrimesvop_setattr { 1741541Srgrimes IN struct vnode *vp; 1751541Srgrimes IN struct vattr *vap; 1761541Srgrimes IN struct ucred *cred; 17783366Sjulian IN struct thread *td; 1781541Srgrimes}; 1791541Srgrimes 18022521Sdyson# 18122521Sdyson#% read vp L L L 18222521Sdyson# 1831541Srgrimesvop_read { 1841541Srgrimes IN struct vnode *vp; 1851541Srgrimes INOUT struct uio *uio; 1861541Srgrimes IN int ioflag; 1871541Srgrimes IN struct ucred *cred; 1881541Srgrimes}; 1891541Srgrimes 19022521Sdyson# 19122521Sdyson#% write vp L L L 19222521Sdyson# 1931541Srgrimesvop_write { 1941541Srgrimes IN struct vnode *vp; 1951541Srgrimes INOUT struct uio *uio; 1961541Srgrimes IN int ioflag; 1971541Srgrimes IN struct ucred *cred; 1981541Srgrimes}; 1991541Srgrimes 20022521Sdyson# 20122521Sdyson#% lease vp = = = 20222521Sdyson# 20322521Sdysonvop_lease { 20422521Sdyson IN struct vnode *vp; 20583366Sjulian IN struct thread *td; 20622521Sdyson IN struct ucred *cred; 20722521Sdyson IN int flag; 20822521Sdyson}; 20922521Sdyson 21022521Sdyson# 21122521Sdyson#% ioctl vp U U U 21222521Sdyson# 2131541Srgrimesvop_ioctl { 2141541Srgrimes IN struct vnode *vp; 21522521Sdyson IN u_long command; 2161541Srgrimes IN caddr_t data; 2171541Srgrimes IN int fflag; 2181541Srgrimes IN struct ucred *cred; 21983366Sjulian IN struct thread *td; 2201541Srgrimes}; 2211541Srgrimes 22222521Sdyson# 22329353Speter#% poll vp U U U 22422521Sdyson# 22529353Spetervop_poll { 2261541Srgrimes IN struct vnode *vp; 22729353Speter IN int events; 2281541Srgrimes IN struct ucred *cred; 22983366Sjulian IN struct thread *td; 2301541Srgrimes}; 2311541Srgrimes 23222521Sdyson# 23372521Sjlemon#% kqfilter vp U U U 23472521Sjlemon# 23572521Sjlemonvop_kqfilter { 23672521Sjlemon IN struct vnode *vp; 23772521Sjlemon IN struct knote *kn; 23872521Sjlemon}; 23972521Sjlemon 24072521Sjlemon# 24122521Sdyson#% revoke vp U U U 24222521Sdyson# 24322521Sdysonvop_revoke { 24422521Sdyson IN struct vnode *vp; 24522521Sdyson IN int flags; 24622521Sdyson}; 24722521Sdyson 24822521Sdyson# 24922521Sdyson#% fsync vp L L L 25022521Sdyson# 2511541Srgrimesvop_fsync { 2521541Srgrimes IN struct vnode *vp; 2531541Srgrimes IN struct ucred *cred; 2541541Srgrimes IN int waitfor; 25583366Sjulian IN struct thread *td; 2561541Srgrimes}; 2571541Srgrimes 25822521Sdyson# 25935823Smsmith#% remove dvp L L L 26035823Smsmith#% remove vp L L L 26122521Sdyson# 2621541Srgrimesvop_remove { 26335823Smsmith IN struct vnode *dvp; 26435823Smsmith IN struct vnode *vp; 2651541Srgrimes IN struct componentname *cnp; 2661541Srgrimes}; 2671541Srgrimes 26822521Sdyson# 26935823Smsmith#% link tdvp L L L 270103636Struckman#% link vp L L L 27122521Sdyson# 2729842Sdgvop_link { 27335823Smsmith IN struct vnode *tdvp; 2749842Sdg IN struct vnode *vp; 2759842Sdg IN struct componentname *cnp; 2769842Sdg}; 2771541Srgrimes 27822521Sdyson# 27999484Sjeff# rename fdvp U U U 28099484Sjeff# rename fvp U U U 28199484Sjeff# rename tdvp L U U 28299484Sjeff# rename tvp X U U 28399484Sjeff#! rename pre vop_rename_pre 28422521Sdyson# 2851541Srgrimesvop_rename { 2861541Srgrimes IN WILLRELE struct vnode *fdvp; 2871541Srgrimes IN WILLRELE struct vnode *fvp; 2881541Srgrimes IN struct componentname *fcnp; 2891541Srgrimes IN WILLRELE struct vnode *tdvp; 2901541Srgrimes IN WILLRELE struct vnode *tvp; 2911541Srgrimes IN struct componentname *tcnp; 2921541Srgrimes}; 2931541Srgrimes 29422521Sdyson# 29535823Smsmith#% mkdir dvp L L L 29622521Sdyson#% mkdir vpp - L - 29722521Sdyson# 2981541Srgrimesvop_mkdir { 29935823Smsmith IN struct vnode *dvp; 3001541Srgrimes OUT struct vnode **vpp; 3011541Srgrimes IN struct componentname *cnp; 3021541Srgrimes IN struct vattr *vap; 3031541Srgrimes}; 3041541Srgrimes 30522521Sdyson# 30635823Smsmith#% rmdir dvp L L L 30735823Smsmith#% rmdir vp L L L 30822521Sdyson# 3091541Srgrimesvop_rmdir { 31035823Smsmith IN struct vnode *dvp; 31135823Smsmith IN struct vnode *vp; 3121541Srgrimes IN struct componentname *cnp; 3131541Srgrimes}; 3141541Srgrimes 31522521Sdyson# 31635823Smsmith#% symlink dvp L L L 31780295Sassar#% symlink vpp - L - 31822521Sdyson# 3191541Srgrimesvop_symlink { 32035823Smsmith IN struct vnode *dvp; 32153131Seivind OUT struct vnode **vpp; 3221541Srgrimes IN struct componentname *cnp; 3231541Srgrimes IN struct vattr *vap; 3241541Srgrimes IN char *target; 3251541Srgrimes}; 3261541Srgrimes 32722521Sdyson# 32822521Sdyson#% readdir vp L L L 32922521Sdyson# 3301541Srgrimesvop_readdir { 3311541Srgrimes IN struct vnode *vp; 3321541Srgrimes INOUT struct uio *uio; 3331541Srgrimes IN struct ucred *cred; 3343167Sdfr INOUT int *eofflag; 33522521Sdyson OUT int *ncookies; 33622521Sdyson INOUT u_long **cookies; 3371541Srgrimes}; 3381541Srgrimes 33922521Sdyson# 34022521Sdyson#% readlink vp L L L 34122521Sdyson# 3421541Srgrimesvop_readlink { 3431541Srgrimes IN struct vnode *vp; 3441541Srgrimes INOUT struct uio *uio; 3451541Srgrimes IN struct ucred *cred; 3461541Srgrimes}; 3471541Srgrimes 34822521Sdyson# 34922521Sdyson#% inactive vp L U U 35022521Sdyson# 3511541Srgrimesvop_inactive { 3521541Srgrimes IN struct vnode *vp; 35383366Sjulian IN struct thread *td; 3541541Srgrimes}; 3551541Srgrimes 35622521Sdyson# 35722521Sdyson#% reclaim vp U U U 35822521Sdyson# 3591541Srgrimesvop_reclaim { 3601541Srgrimes IN struct vnode *vp; 36183366Sjulian IN struct thread *td; 3621541Srgrimes}; 3631541Srgrimes 36422521Sdyson# 365102210Sjeff#lock vp ? ? ? 366102210Sjeff#! lock pre vop_lock_pre 367102210Sjeff#! lock post vop_lock_post 36822521Sdyson# 3691541Srgrimesvop_lock { 3701541Srgrimes IN struct vnode *vp; 37122521Sdyson IN int flags; 37283366Sjulian IN struct thread *td; 3731541Srgrimes}; 3741541Srgrimes 37522521Sdyson# 376102210Sjeff#unlock vp L ? L 377102210Sjeff#! unlock pre vop_unlock_pre 378102210Sjeff#! unlock post vop_unlock_post 37922521Sdyson# 3801541Srgrimesvop_unlock { 3811541Srgrimes IN struct vnode *vp; 38222521Sdyson IN int flags; 38383366Sjulian IN struct thread *td; 3841541Srgrimes}; 3851541Srgrimes 38622521Sdyson# 38722521Sdyson#% bmap vp L L L 38822521Sdyson#% bmap vpp - U - 38922521Sdyson# 3901541Srgrimesvop_bmap { 3911541Srgrimes IN struct vnode *vp; 39296572Sphk IN daddr_t bn; 3931541Srgrimes OUT struct vnode **vpp; 39496572Sphk IN daddr_t *bnp; 3951541Srgrimes OUT int *runp; 39610551Sdyson OUT int *runb; 3971541Srgrimes}; 3981541Srgrimes 39922521Sdyson# 40099486Sjeff# strategy vp L L L 40199486Sjeff#! strategy pre vop_strategy_pre 40222521Sdyson# 40337384Sjulianvop_strategy { 40437384Sjulian IN struct vnode *vp; 40537384Sjulian IN struct buf *bp; 40637384Sjulian}; 4071541Srgrimes 40822521Sdyson# 409108686Sphk# specstrategy vp L L L 410108686Sphk#! specstrategy pre vop_strategy_pre 411108686Sphk# 412108686Sphkvop_specstrategy { 413108686Sphk IN struct vnode *vp; 414108686Sphk IN struct buf *bp; 415108686Sphk}; 416108686Sphk 417108686Sphk# 41862976Smckusick#% getwritemount vp = = = 41962976Smckusick# 42062976Smckusickvop_getwritemount { 42162976Smckusick IN struct vnode *vp; 42262976Smckusick OUT struct mount **mpp; 42362976Smckusick}; 42462976Smckusick 42562976Smckusick# 42622521Sdyson#% print vp = = = 42722521Sdyson# 4281541Srgrimesvop_print { 4291541Srgrimes IN struct vnode *vp; 4301541Srgrimes}; 4311541Srgrimes 43222521Sdyson# 43322521Sdyson#% pathconf vp L L L 43422521Sdyson# 4351541Srgrimesvop_pathconf { 4361541Srgrimes IN struct vnode *vp; 4371541Srgrimes IN int name; 43822521Sdyson OUT register_t *retval; 4391541Srgrimes}; 4401541Srgrimes 44122521Sdyson# 44222521Sdyson#% advlock vp U U U 44322521Sdyson# 4441541Srgrimesvop_advlock { 4451541Srgrimes IN struct vnode *vp; 4461541Srgrimes IN caddr_t id; 4471541Srgrimes IN int op; 4481541Srgrimes IN struct flock *fl; 4491541Srgrimes IN int flags; 4501541Srgrimes}; 4511541Srgrimes 45222521Sdyson# 45322521Sdyson#% reallocblks vp L L L 45422521Sdyson# 4551541Srgrimesvop_reallocblks { 4561541Srgrimes IN struct vnode *vp; 4571541Srgrimes IN struct cluster_save *buflist; 4581541Srgrimes}; 4591541Srgrimes 46045058Seivind# 46145058Seivind#% getpages vp L L L 46245058Seivind# 46310551Sdysonvop_getpages { 46410551Sdyson IN struct vnode *vp; 46510551Sdyson IN vm_page_t *m; 46610551Sdyson IN int count; 46710551Sdyson IN int reqpage; 46812767Sdyson IN vm_ooffset_t offset; 46910551Sdyson}; 47010551Sdyson 47145058Seivind# 47245058Seivind#% putpages vp L L L 47345058Seivind# 47410551Sdysonvop_putpages { 47510551Sdyson IN struct vnode *vp; 47610551Sdyson IN vm_page_t *m; 47710551Sdyson IN int count; 47810551Sdyson IN int sync; 47910551Sdyson IN int *rtvals; 48012767Sdyson IN vm_ooffset_t offset; 48110551Sdyson}; 48211704Sdyson 48322521Sdyson# 48438862Sphk#% freeblks vp - - - 48538862Sphk# 48638862Sphk# This call is used by the filesystem to release blocks back to 48738862Sphk# device-driver. This is useful if the driver has a lengthy 48838862Sphk# erase handling or similar. 48938862Sphk# 49038862Sphk 49138862Sphkvop_freeblks { 49238862Sphk IN struct vnode *vp; 49338862Sphk IN daddr_t addr; 49438862Sphk IN daddr_t length; 49538862Sphk}; 49638862Sphk 49738862Sphk# 49866184Srwatson#% getacl vp L L L 49954803Srwatson# 50054803Srwatsonvop_getacl { 50154803Srwatson IN struct vnode *vp; 50254803Srwatson IN acl_type_t type; 50354803Srwatson OUT struct acl *aclp; 50454803Srwatson IN struct ucred *cred; 50583366Sjulian IN struct thread *td; 50654803Srwatson}; 50754803Srwatson 50854803Srwatson# 50954803Srwatson#% setacl vp L L L 51054803Srwatson# 51154803Srwatsonvop_setacl { 51254803Srwatson IN struct vnode *vp; 51354803Srwatson IN acl_type_t type; 51454803Srwatson IN struct acl *aclp; 51554803Srwatson IN struct ucred *cred; 51683366Sjulian IN struct thread *td; 51754803Srwatson}; 51854803Srwatson 51954803Srwatson# 52054803Srwatson#% aclcheck vp = = = 52154803Srwatson# 52254803Srwatsonvop_aclcheck { 52354803Srwatson IN struct vnode *vp; 52454803Srwatson IN acl_type_t type; 52554803Srwatson IN struct acl *aclp; 52654803Srwatson IN struct ucred *cred; 52783366Sjulian IN struct thread *td; 52854803Srwatson}; 52954803Srwatson 53054803Srwatson# 531102990Sphk#% closeextattr vp L L L 532102990Sphk# 533102990Sphkvop_closeextattr { 534102990Sphk IN struct vnode *vp; 535102990Sphk IN int commit; 536102990Sphk IN struct ucred *cred; 537102990Sphk IN struct thread *td; 538102990Sphk}; 539102990Sphk 540102990Sphk# 54163893Srwatson#% getextattr vp L L L 54254803Srwatson# 54354803Srwatsonvop_getextattr { 54454803Srwatson IN struct vnode *vp; 54574437Srwatson IN int attrnamespace; 54665119Srwatson IN const char *name; 54754803Srwatson INOUT struct uio *uio; 54890448Srwatson OUT size_t *size; 54954803Srwatson IN struct ucred *cred; 55083366Sjulian IN struct thread *td; 55154803Srwatson}; 55254803Srwatson 55354803Srwatson# 554115867Srwatson#% listextattr vp L L L 555115867Srwatson# 556115867Srwatsonvop_listextattr { 557115867Srwatson IN struct vnode *vp; 558115867Srwatson IN int attrnamespace; 559115867Srwatson INOUT struct uio *uio; 560115867Srwatson OUT size_t *size; 561115867Srwatson IN struct ucred *cred; 562115867Srwatson IN struct thread *td; 563115867Srwatson}; 564115867Srwatson 565115867Srwatson# 566102990Sphk#% openextattr vp L L L 567102990Sphk# 568102990Sphkvop_openextattr { 569102990Sphk IN struct vnode *vp; 570102990Sphk IN struct ucred *cred; 571102990Sphk IN struct thread *td; 572102990Sphk}; 573102990Sphk 574102990Sphk# 575116698Srwatson#% rmextattr vp L L L 576116698Srwatson# 577116698Srwatsonvop_rmextattr { 578116698Srwatson IN struct vnode *vp; 579116698Srwatson IN int attrnamespace; 580116698Srwatson IN const char *name; 581116698Srwatson IN struct ucred *cred; 582116698Srwatson IN struct thread *td; 583116698Srwatson}; 584116698Srwatson 585116698Srwatson# 58654803Srwatson#% setextattr vp L L L 58754803Srwatson# 58854803Srwatsonvop_setextattr { 58954803Srwatson IN struct vnode *vp; 59074437Srwatson IN int attrnamespace; 59165119Srwatson IN const char *name; 59254803Srwatson INOUT struct uio *uio; 59354803Srwatson IN struct ucred *cred; 59483366Sjulian IN struct thread *td; 59554803Srwatson}; 59665770Sbp 59765770Sbp# 59865770Sbp#% createvobject vp L L L 59965770Sbp# 60065770Sbpvop_createvobject { 60165770Sbp IN struct vnode *vp; 60265770Sbp IN struct ucred *cred; 60383366Sjulian IN struct thread *td; 60465770Sbp}; 60565770Sbp 60665770Sbp# 60765770Sbp#% destroyvobject vp L L L 60865770Sbp# 60965770Sbpvop_destroyvobject { 61065770Sbp IN struct vnode *vp; 61165770Sbp}; 61265770Sbp 61365770Sbp# 61465770Sbp#% getvobject vp L L L 61565770Sbp# 61665770Sbpvop_getvobject { 61765770Sbp IN struct vnode *vp; 61865770Sbp OUT struct vm_object **objpp; 61965770Sbp}; 620100984Srwatson 621100984Srwatson# 622100984Srwatson#% setlabel vp L L L 623100984Srwatson# 624100984Srwatsonvop_setlabel { 625100984Srwatson IN struct vnode *vp; 626100984Srwatson IN struct label *label; 627100984Srwatson IN struct ucred *cred; 628100984Srwatson IN struct thread *td; 629100984Srwatson}; 630