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: releng/11.0/sys/kern/vnode_if.src 298982 2016-05-03 15:17:43Z kib $ 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 38298819Spfg# the lock state on input, the "out" column defines the state on successful 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 53229728Sjhb# indirection (**vpp) and that name is hard-coded 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 66243271Savg%% lookup dvp L L L 67159082Sdds%% lookup vpp - L - 68159082Sdds 6922521Sdyson# XXX - the lookup locking protocol defies simple description and depends 7022521Sdyson# on the flags and operation fields in the (cnp) structure. Note 7122521Sdyson# especially that *vpp may equal dvp and both may be locked. 72159082Sdds 731541Srgrimesvop_lookup { 741541Srgrimes IN struct vnode *dvp; 751541Srgrimes INOUT struct vnode **vpp; 761541Srgrimes IN struct componentname *cnp; 771541Srgrimes}; 781541Srgrimes 79243271Savg%% cachedlookup dvp L L L 80159082Sdds%% cachedlookup vpp - L - 81159082Sdds 8228732Sphk# This must be an exact copy of lookup. See kern/vfs_cache.c for details. 83159082Sdds 8428732Sphkvop_cachedlookup { 8528732Sphk IN struct vnode *dvp; 8628732Sphk INOUT struct vnode **vpp; 8728732Sphk IN struct componentname *cnp; 8828732Sphk}; 8928732Sphk 90159082Sdds%% create dvp E E E 91159082Sdds%% create vpp - L - 92159082Sdds%! create post vop_create_post 93159082Sdds 941541Srgrimesvop_create { 9535823Smsmith IN struct vnode *dvp; 961541Srgrimes OUT struct vnode **vpp; 971541Srgrimes IN struct componentname *cnp; 981541Srgrimes IN struct vattr *vap; 991541Srgrimes}; 1001541Srgrimes 101159082Sdds 102159082Sdds%% whiteout dvp E E E 103159082Sdds 10422521Sdysonvop_whiteout { 10535823Smsmith IN struct vnode *dvp; 10622521Sdyson IN struct componentname *cnp; 10722521Sdyson IN int flags; 10822521Sdyson}; 10922521Sdyson 110159082Sdds 111159082Sdds%% mknod dvp E E E 112159082Sdds%% mknod vpp - L - 113159082Sdds%! mknod post vop_mknod_post 114159082Sdds 1151541Srgrimesvop_mknod { 11635823Smsmith IN struct vnode *dvp; 11753101Seivind OUT struct vnode **vpp; 1181541Srgrimes IN struct componentname *cnp; 1191541Srgrimes IN struct vattr *vap; 1201541Srgrimes}; 1211541Srgrimes 122159082Sdds 123159082Sdds%% open vp L L L 124298982Skib%! open post vop_open_post 125159082Sdds 1261541Srgrimesvop_open { 1271541Srgrimes IN struct vnode *vp; 1281541Srgrimes IN int mode; 1291541Srgrimes IN struct ucred *cred; 13083366Sjulian IN struct thread *td; 131170152Skib IN struct file *fp; 1321541Srgrimes}; 1331541Srgrimes 134159082Sdds 135189696Sjhb%% close vp L L L 136298982Skib%! close post vop_close_post 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 191298982Skib%! read post vop_read_post 192159082Sdds 1931541Srgrimesvop_read { 1941541Srgrimes IN struct vnode *vp; 1951541Srgrimes INOUT struct uio *uio; 1961541Srgrimes IN int ioflag; 1971541Srgrimes IN struct ucred *cred; 1981541Srgrimes}; 1991541Srgrimes 200159082Sdds 201193762Sps%% write vp L L L 202159082Sdds%! write pre VOP_WRITE_PRE 203159082Sdds%! write post VOP_WRITE_POST 204159082Sdds 2051541Srgrimesvop_write { 2061541Srgrimes IN struct vnode *vp; 2071541Srgrimes INOUT struct uio *uio; 2081541Srgrimes IN int ioflag; 2091541Srgrimes IN struct ucred *cred; 2101541Srgrimes}; 2111541Srgrimes 212159082Sdds 213159082Sdds%% ioctl vp U U U 214159082Sdds 2151541Srgrimesvop_ioctl { 2161541Srgrimes IN struct vnode *vp; 21722521Sdyson IN u_long command; 218153400Sdes IN void *data; 2191541Srgrimes IN int fflag; 2201541Srgrimes IN struct ucred *cred; 22183366Sjulian IN struct thread *td; 2221541Srgrimes}; 2231541Srgrimes 224159082Sdds 225184377Sjhb%% poll vp U U U 226159082Sdds 22729353Spetervop_poll { 2281541Srgrimes IN struct vnode *vp; 22929353Speter IN int events; 2301541Srgrimes IN struct ucred *cred; 23183366Sjulian IN struct thread *td; 2321541Srgrimes}; 2331541Srgrimes 234159082Sdds 235159082Sdds%% kqfilter vp U U U 236159082Sdds 23772521Sjlemonvop_kqfilter { 23872521Sjlemon IN struct vnode *vp; 23972521Sjlemon IN struct knote *kn; 24072521Sjlemon}; 24172521Sjlemon 242159082Sdds 243159082Sdds%% revoke vp L L L 244159082Sdds 24522521Sdysonvop_revoke { 24622521Sdyson IN struct vnode *vp; 24722521Sdyson IN int flags; 24822521Sdyson}; 24922521Sdyson 250159082Sdds 251194019Sps%% fsync vp L L L 252159082Sdds 2531541Srgrimesvop_fsync { 2541541Srgrimes IN struct vnode *vp; 2551541Srgrimes IN int waitfor; 25683366Sjulian IN struct thread *td; 2571541Srgrimes}; 2581541Srgrimes 259159082Sdds 260159082Sdds%% remove dvp E E E 261159082Sdds%% remove vp E E E 262159082Sdds%! remove post vop_remove_post 263159082Sdds 2641541Srgrimesvop_remove { 26535823Smsmith IN struct vnode *dvp; 26635823Smsmith IN struct vnode *vp; 2671541Srgrimes IN struct componentname *cnp; 2681541Srgrimes}; 2691541Srgrimes 270159082Sdds 271159082Sdds%% link tdvp E E E 272159082Sdds%% link vp E E E 273159082Sdds%! link post vop_link_post 274159082Sdds 2759842Sdgvop_link { 27635823Smsmith IN struct vnode *tdvp; 2779842Sdg IN struct vnode *vp; 2789842Sdg IN struct componentname *cnp; 2799842Sdg}; 2801541Srgrimes 281159082Sdds 282159082Sdds%! rename pre vop_rename_pre 283159082Sdds%! rename post vop_rename_post 284159082Sdds 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 294159082Sdds 295159082Sdds%% mkdir dvp E E E 296159082Sdds%% mkdir vpp - E - 297159082Sdds%! mkdir post vop_mkdir_post 298159082Sdds 2991541Srgrimesvop_mkdir { 30035823Smsmith IN struct vnode *dvp; 3011541Srgrimes OUT struct vnode **vpp; 3021541Srgrimes IN struct componentname *cnp; 3031541Srgrimes IN struct vattr *vap; 3041541Srgrimes}; 3051541Srgrimes 306159082Sdds 307159082Sdds%% rmdir dvp E E E 308159082Sdds%% rmdir vp E E E 309159082Sdds%! rmdir post vop_rmdir_post 310159082Sdds 3111541Srgrimesvop_rmdir { 31235823Smsmith IN struct vnode *dvp; 31335823Smsmith IN struct vnode *vp; 3141541Srgrimes IN struct componentname *cnp; 3151541Srgrimes}; 3161541Srgrimes 317159082Sdds 318159082Sdds%% symlink dvp E E E 319159082Sdds%% symlink vpp - E - 320159082Sdds%! symlink post vop_symlink_post 321159082Sdds 3221541Srgrimesvop_symlink { 32335823Smsmith IN struct vnode *dvp; 32453131Seivind OUT struct vnode **vpp; 3251541Srgrimes IN struct componentname *cnp; 3261541Srgrimes IN struct vattr *vap; 3271541Srgrimes IN char *target; 3281541Srgrimes}; 3291541Srgrimes 330159082Sdds 331159082Sdds%% readdir vp L L L 332298982Skib%! readdir post vop_readdir_post 333159082Sdds 3341541Srgrimesvop_readdir { 3351541Srgrimes IN struct vnode *vp; 3361541Srgrimes INOUT struct uio *uio; 3371541Srgrimes IN struct ucred *cred; 3383167Sdfr INOUT int *eofflag; 33922521Sdyson OUT int *ncookies; 34022521Sdyson INOUT u_long **cookies; 3411541Srgrimes}; 3421541Srgrimes 343159082Sdds 344159082Sdds%% readlink vp L L L 345159082Sdds 3461541Srgrimesvop_readlink { 3471541Srgrimes IN struct vnode *vp; 3481541Srgrimes INOUT struct uio *uio; 3491541Srgrimes IN struct ucred *cred; 3501541Srgrimes}; 3511541Srgrimes 352159082Sdds 353159082Sdds%% inactive vp E E E 354159082Sdds 3551541Srgrimesvop_inactive { 3561541Srgrimes IN struct vnode *vp; 35783366Sjulian IN struct thread *td; 3581541Srgrimes}; 3591541Srgrimes 360159082Sdds 361159082Sdds%% reclaim vp E E E 362287831Scem%! reclaim post vop_reclaim_post 363159082Sdds 3641541Srgrimesvop_reclaim { 3651541Srgrimes IN struct vnode *vp; 36683366Sjulian IN struct thread *td; 3671541Srgrimes}; 3681541Srgrimes 369159082Sdds 370169671Skib%! lock1 pre vop_lock_pre 371169671Skib%! lock1 post vop_lock_post 372159082Sdds 373169671Skibvop_lock1 { 3741541Srgrimes IN struct vnode *vp; 37522521Sdyson IN int flags; 376164248Skmacy IN char *file; 377164248Skmacy IN int line; 3781541Srgrimes}; 3791541Srgrimes 380159082Sdds 381159082Sdds%! unlock pre vop_unlock_pre 382159082Sdds%! unlock post vop_unlock_post 383159082Sdds 3841541Srgrimesvop_unlock { 3851541Srgrimes IN struct vnode *vp; 38622521Sdyson IN int flags; 3871541Srgrimes}; 3881541Srgrimes 389159082Sdds 390159082Sdds%% bmap vp L L L 391159082Sdds 3921541Srgrimesvop_bmap { 3931541Srgrimes IN struct vnode *vp; 39496572Sphk IN daddr_t bn; 395137726Sphk OUT struct bufobj **bop; 39696572Sphk IN daddr_t *bnp; 3971541Srgrimes OUT int *runp; 39810551Sdyson OUT int *runb; 3991541Srgrimes}; 4001541Srgrimes 401159082Sdds 402159082Sdds%% strategy vp L L L 403159082Sdds%! strategy pre vop_strategy_pre 404159082Sdds 40537384Sjulianvop_strategy { 40637384Sjulian IN struct vnode *vp; 40737384Sjulian IN struct buf *bp; 40837384Sjulian}; 4091541Srgrimes 410159082Sdds 411159082Sdds%% getwritemount vp = = = 412159082Sdds 41362976Smckusickvop_getwritemount { 41462976Smckusick IN struct vnode *vp; 41562976Smckusick OUT struct mount **mpp; 41662976Smckusick}; 41762976Smckusick 418159082Sdds 419176590Skib%% print vp - - - 420159082Sdds 4211541Srgrimesvop_print { 4221541Srgrimes IN struct vnode *vp; 4231541Srgrimes}; 4241541Srgrimes 425159082Sdds 426159082Sdds%% pathconf vp L L L 427159082Sdds 4281541Srgrimesvop_pathconf { 4291541Srgrimes IN struct vnode *vp; 4301541Srgrimes IN int name; 43122521Sdyson OUT register_t *retval; 4321541Srgrimes}; 4331541Srgrimes 434159082Sdds 435159082Sdds%% advlock vp U U U 436159082Sdds 4371541Srgrimesvop_advlock { 4381541Srgrimes IN struct vnode *vp; 439153400Sdes IN void *id; 4401541Srgrimes IN int op; 4411541Srgrimes IN struct flock *fl; 4421541Srgrimes IN int flags; 4431541Srgrimes}; 4441541Srgrimes 445159082Sdds 446177633Sdfr%% advlockasync vp U U U 447177633Sdfr 448177633Sdfrvop_advlockasync { 449177633Sdfr IN struct vnode *vp; 450177633Sdfr IN void *id; 451177633Sdfr IN int op; 452177633Sdfr IN struct flock *fl; 453177633Sdfr IN int flags; 454177633Sdfr IN struct task *task; 455177633Sdfr INOUT void **cookiep; 456177633Sdfr}; 457177633Sdfr 458177633Sdfr 459208003Szml%% advlockpurge vp E E E 460208003Szml 461208003Szmlvop_advlockpurge { 462208003Szml IN struct vnode *vp; 463208003Szml}; 464208003Szml 465208003Szml 466159082Sdds%% reallocblks vp E E E 467159082Sdds 4681541Srgrimesvop_reallocblks { 4691541Srgrimes IN struct vnode *vp; 4701541Srgrimes IN struct cluster_save *buflist; 4711541Srgrimes}; 4721541Srgrimes 473159082Sdds 474159082Sdds%% getpages vp L L L 475159082Sdds 47610551Sdysonvop_getpages { 47710551Sdyson IN struct vnode *vp; 47810551Sdyson IN vm_page_t *m; 47910551Sdyson IN int count; 480292373Sglebius IN int *rbehind; 481292373Sglebius IN int *rahead; 48210551Sdyson}; 48310551Sdyson 484159082Sdds 485274914Sglebius%% getpages_async vp L L L 486274914Sglebius 487274914Sglebiusvop_getpages_async { 488274914Sglebius IN struct vnode *vp; 489274914Sglebius IN vm_page_t *m; 490274914Sglebius IN int count; 491292373Sglebius IN int *rbehind; 492292373Sglebius IN int *rahead; 493274914Sglebius IN vop_getpages_iodone_t *iodone; 494274914Sglebius IN void *arg; 495274914Sglebius}; 496274914Sglebius 497274914Sglebius 498257899Skib%% putpages vp L L L 499159082Sdds 50010551Sdysonvop_putpages { 50110551Sdyson IN struct vnode *vp; 50210551Sdyson IN vm_page_t *m; 50310551Sdyson IN int count; 50410551Sdyson IN int sync; 50510551Sdyson IN int *rtvals; 50610551Sdyson}; 50711704Sdyson 508159082Sdds 509159082Sdds%% getacl vp L L L 510159082Sdds 51154803Srwatsonvop_getacl { 51254803Srwatson IN struct vnode *vp; 51354803Srwatson IN acl_type_t type; 51454803Srwatson OUT struct acl *aclp; 51554803Srwatson IN struct ucred *cred; 51683366Sjulian IN struct thread *td; 51754803Srwatson}; 51854803Srwatson 519159082Sdds 520159082Sdds%% setacl vp E E E 521159082Sdds 52254803Srwatsonvop_setacl { 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 530159082Sdds 531159082Sdds%% aclcheck vp = = = 532159082Sdds 53354803Srwatsonvop_aclcheck { 53454803Srwatson IN struct vnode *vp; 53554803Srwatson IN acl_type_t type; 53654803Srwatson IN struct acl *aclp; 53754803Srwatson IN struct ucred *cred; 53883366Sjulian IN struct thread *td; 53954803Srwatson}; 54054803Srwatson 541159082Sdds 542159082Sdds%% closeextattr vp L L L 543159082Sdds 544102990Sphkvop_closeextattr { 545102990Sphk IN struct vnode *vp; 546102990Sphk IN int commit; 547102990Sphk IN struct ucred *cred; 548102990Sphk IN struct thread *td; 549102990Sphk}; 550102990Sphk 551159082Sdds 552159082Sdds%% getextattr vp L L L 553159082Sdds 55454803Srwatsonvop_getextattr { 55554803Srwatson IN struct vnode *vp; 55674437Srwatson IN int attrnamespace; 55765119Srwatson IN const char *name; 55854803Srwatson INOUT struct uio *uio; 55990448Srwatson OUT size_t *size; 56054803Srwatson IN struct ucred *cred; 56183366Sjulian IN struct thread *td; 56254803Srwatson}; 56354803Srwatson 564159082Sdds 565159082Sdds%% listextattr vp L L L 566159082Sdds 567115867Srwatsonvop_listextattr { 568115867Srwatson IN struct vnode *vp; 569115867Srwatson IN int attrnamespace; 570115867Srwatson INOUT struct uio *uio; 571115867Srwatson OUT size_t *size; 572115867Srwatson IN struct ucred *cred; 573115867Srwatson IN struct thread *td; 574115867Srwatson}; 575115867Srwatson 576159082Sdds 577159082Sdds%% openextattr vp L L L 578159082Sdds 579102990Sphkvop_openextattr { 580102990Sphk IN struct vnode *vp; 581102990Sphk IN struct ucred *cred; 582102990Sphk IN struct thread *td; 583102990Sphk}; 584102990Sphk 585159082Sdds 586159082Sdds%% deleteextattr vp E E E 587228849Sjhb%! deleteextattr post vop_deleteextattr_post 588159082Sdds 589118131Srwatsonvop_deleteextattr { 590116698Srwatson IN struct vnode *vp; 591116698Srwatson IN int attrnamespace; 592116698Srwatson IN const char *name; 593116698Srwatson IN struct ucred *cred; 594116698Srwatson IN struct thread *td; 595116698Srwatson}; 596116698Srwatson 597159082Sdds 598159082Sdds%% setextattr vp E E E 599228849Sjhb%! setextattr post vop_setextattr_post 600159082Sdds 60154803Srwatsonvop_setextattr { 60254803Srwatson IN struct vnode *vp; 60374437Srwatson IN int attrnamespace; 60465119Srwatson IN const char *name; 60554803Srwatson INOUT struct uio *uio; 60654803Srwatson IN struct ucred *cred; 60783366Sjulian IN struct thread *td; 60854803Srwatson}; 60965770Sbp 610159082Sdds 611159082Sdds%% setlabel vp E E E 612159082Sdds 613100984Srwatsonvop_setlabel { 614100984Srwatson IN struct vnode *vp; 615100984Srwatson IN struct label *label; 616100984Srwatson IN struct ucred *cred; 617100984Srwatson IN struct thread *td; 618100984Srwatson}; 619166774Spjd 620166774Spjd 621184377Sjhb%% vptofh vp = = = 622166774Spjd 623166774Spjdvop_vptofh { 624166774Spjd IN struct vnode *vp; 625166774Spjd IN struct fid *fhp; 626166774Spjd}; 627185956Smarcus 628220791Smdf 629185956Smarcus%% vptocnp vp L L L 630185956Smarcus%% vptocnp vpp - U - 631185956Smarcus 632185956Smarcusvop_vptocnp { 633185956Smarcus IN struct vnode *vp; 634185956Smarcus OUT struct vnode **vpp; 635194601Skib IN struct ucred *cred; 636185956Smarcus INOUT char *buf; 637185956Smarcus INOUT int *buflen; 638185956Smarcus}; 639220791Smdf 640220791Smdf 641220846Smdf%% allocate vp E E E 642220791Smdf 643220791Smdfvop_allocate { 644220791Smdf IN struct vnode *vp; 645221836Smdf INOUT off_t *offset; 646221836Smdf INOUT off_t *len; 647220791Smdf}; 648227070Sjhb 649227070Sjhb%% advise vp U U U 650227070Sjhb 651227070Sjhbvop_advise { 652227070Sjhb IN struct vnode *vp; 653227070Sjhb IN off_t start; 654227070Sjhb IN off_t end; 655227070Sjhb IN int advice; 656227070Sjhb}; 657229728Sjhb 658232317Strociny%% unp_bind vp E E E 659232317Strociny 660232317Strocinyvop_unp_bind { 661232317Strociny IN struct vnode *vp; 662232317Strociny IN struct socket *socket; 663232317Strociny}; 664232317Strociny 665232317Strociny%% unp_connect vp L L L 666232317Strociny 667232317Strocinyvop_unp_connect { 668232317Strociny IN struct vnode *vp; 669232317Strociny OUT struct socket **socket; 670232317Strociny}; 671232317Strociny 672232317Strociny%% unp_detach vp = = = 673232317Strociny 674232317Strocinyvop_unp_detach { 675232317Strociny IN struct vnode *vp; 676232317Strociny}; 677232317Strociny 678241025Skib%% is_text vp L L L 679241025Skib 680241025Skibvop_is_text { 681241025Skib IN struct vnode *vp; 682241025Skib}; 683241025Skib 684241025Skib%% set_text vp E E E 685241025Skib 686241025Skibvop_set_text { 687241025Skib IN struct vnode *vp; 688241025Skib}; 689241025Skib 690241025Skib%% vop_unset_text vp E E E 691241025Skib 692241025Skibvop_unset_text { 693241025Skib IN struct vnode *vp; 694241025Skib}; 695241025Skib 696242476Skib%% get_writecount vp L L L 697242476Skib 698242476Skibvop_get_writecount { 699242476Skib IN struct vnode *vp; 700242476Skib OUT int *writecount; 701242476Skib}; 702242476Skib 703242476Skib%% add_writecount vp E E E 704242476Skib 705242476Skibvop_add_writecount { 706242476Skib IN struct vnode *vp; 707242476Skib IN int inc; 708242476Skib}; 709242476Skib 710229728Sjhb# The VOPs below are spares at the end of the table to allow new VOPs to be 711229728Sjhb# added in stable branches without breaking the KBI. New VOPs in HEAD should 712229728Sjhb# be added above these spares. When merging a new VOP to a stable branch, 713229728Sjhb# the new VOP should replace one of the spares. 714229728Sjhb 715229728Sjhbvop_spare1 { 716229728Sjhb IN struct vnode *vp; 717229728Sjhb}; 718229728Sjhb 719229728Sjhbvop_spare2 { 720229728Sjhb IN struct vnode *vp; 721229728Sjhb}; 722229728Sjhb 723229728Sjhbvop_spare3 { 724229728Sjhb IN struct vnode *vp; 725229728Sjhb}; 726229728Sjhb 727229728Sjhbvop_spare4 { 728229728Sjhb IN struct vnode *vp; 729229728Sjhb}; 730229728Sjhb 731229728Sjhbvop_spare5 { 732229728Sjhb IN struct vnode *vp; 733229728Sjhb}; 734