1*86d7f5d3SJohn Marino.\" Copyright (c) 1996 Doug Rabson 2*86d7f5d3SJohn Marino.\" 3*86d7f5d3SJohn Marino.\" All rights reserved. 4*86d7f5d3SJohn Marino.\" 5*86d7f5d3SJohn Marino.\" This program is free software. 6*86d7f5d3SJohn Marino.\" 7*86d7f5d3SJohn Marino.\" Redistribution and use in source and binary forms, with or without 8*86d7f5d3SJohn Marino.\" modification, are permitted provided that the following conditions 9*86d7f5d3SJohn Marino.\" are met: 10*86d7f5d3SJohn Marino.\" 1. Redistributions of source code must retain the above copyright 11*86d7f5d3SJohn Marino.\" notice, this list of conditions and the following disclaimer. 12*86d7f5d3SJohn Marino.\" 2. Redistributions in binary form must reproduce the above copyright 13*86d7f5d3SJohn Marino.\" notice, this list of conditions and the following disclaimer in the 14*86d7f5d3SJohn Marino.\" documentation and/or other materials provided with the distribution. 15*86d7f5d3SJohn Marino.\" 16*86d7f5d3SJohn Marino.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR 17*86d7f5d3SJohn Marino.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18*86d7f5d3SJohn Marino.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19*86d7f5d3SJohn Marino.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, 20*86d7f5d3SJohn Marino.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21*86d7f5d3SJohn Marino.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22*86d7f5d3SJohn Marino.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23*86d7f5d3SJohn Marino.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24*86d7f5d3SJohn Marino.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25*86d7f5d3SJohn Marino.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26*86d7f5d3SJohn Marino.\" 27*86d7f5d3SJohn Marino.\" $FreeBSD: src/share/man/man9/vget.9,v 1.5.2.1 2001/12/17 11:30:19 ru Exp $ 28*86d7f5d3SJohn Marino.\" 29*86d7f5d3SJohn Marino.Dd May 5, 2007 30*86d7f5d3SJohn Marino.Dt VGET 9 31*86d7f5d3SJohn Marino.Os 32*86d7f5d3SJohn Marino.Sh NAME 33*86d7f5d3SJohn Marino.Nm vget 34*86d7f5d3SJohn Marino.Nd Acquire a primary reference, lock, and reactivate a vnode 35*86d7f5d3SJohn Marino.Sh SYNOPSIS 36*86d7f5d3SJohn Marino.In sys/param.h 37*86d7f5d3SJohn Marino.In sys/vnode.h 38*86d7f5d3SJohn Marino.Ft int 39*86d7f5d3SJohn Marino.Fn vget "struct vnode *vp" "int lockflag" 40*86d7f5d3SJohn Marino.Sh DESCRIPTION 41*86d7f5d3SJohn MarinoAcquire a primary reference to vnode and lock it, reactivating the vnode 42*86d7f5d3SJohn Marinofrom the cache or free list if necessary. 43*86d7f5d3SJohn MarinoThis kernel function must be used if the vnode in hand is 44*86d7f5d3SJohn Marinonot already known to be actively referenced, such as when obtaining 45*86d7f5d3SJohn Marinothe vnode pointer from a namecache or VM object structure. 46*86d7f5d3SJohn Marino.Bl -tag -width ".Fa lockflag" 47*86d7f5d3SJohn Marino.It Fa vp 48*86d7f5d3SJohn MarinoThe vnode being acquired, typically obtained from some other system 49*86d7f5d3SJohn Marinostructure. 50*86d7f5d3SJohn Marino.It Fa lockflag 51*86d7f5d3SJohn MarinoMust be 52*86d7f5d3SJohn Marino.Dv LK_SHARED 53*86d7f5d3SJohn Marinoor 54*86d7f5d3SJohn Marino.Dv LK_EXCLUSIVE . 55*86d7f5d3SJohn MarinoPassing 0 is illegal. 56*86d7f5d3SJohn Marino.Dv LK_NOWAIT 57*86d7f5d3SJohn Marinomay be logically ORd in if you do not wish to block and can handle the 58*86d7f5d3SJohn Marinoadditional error codes that might be returned. 59*86d7f5d3SJohn Marino.El 60*86d7f5d3SJohn Marino.Pp 61*86d7f5d3SJohn MarinoWhen not in use, vnodes are kept on a free list or marked as being cached. 62*86d7f5d3SJohn MarinoThe vnodes still reference valid files but may be reused to refer to a 63*86d7f5d3SJohn Marinonew file at any time. 64*86d7f5d3SJohn MarinoOften, references to these vnodes are present in auxiliary structures 65*86d7f5d3SJohn Marinorelated to the vnode, such as namecache entries and VM objects. 66*86d7f5d3SJohn Marino.Pp 67*86d7f5d3SJohn MarinoWhen acquiring a vnode pointer from these auxiliary structures the 68*86d7f5d3SJohn Marino.Nm 69*86d7f5d3SJohn Marinofunction must be used to both reference and, if necessary, reactivate 70*86d7f5d3SJohn Marinothe vnode. The vnode will also be locked accordingly. 71*86d7f5d3SJohn Marino.Sh RETURN VALUES 72*86d7f5d3SJohn Marino0 is returned on success, 73*86d7f5d3SJohn Marino.Er ENOENT 74*86d7f5d3SJohn Marinois returned if the vnode becomes unusable while 75*86d7f5d3SJohn Marino.Nm 76*86d7f5d3SJohn Marinois blocked trying to lock it, and other errors may be returned as well. 77*86d7f5d3SJohn Marino.Er ENOENT 78*86d7f5d3SJohn Marinois not typically considered to be a fatal error but simply an 79*86d7f5d3SJohn Marinoindication that the caller needs to relookup the vnode as related 80*86d7f5d3SJohn Marinostructures may be in the midst of being destroyed. 81*86d7f5d3SJohn Marino.Sh SEE ALSO 82*86d7f5d3SJohn Marino.Xr vdrop 9 , 83*86d7f5d3SJohn Marino.Xr vhold 9 , 84*86d7f5d3SJohn Marino.Xr vnode 9 , 85*86d7f5d3SJohn Marino.Xr vn_lock 9 , 86*86d7f5d3SJohn Marino.Xr vn_unlock 9 , 87*86d7f5d3SJohn Marino.Xr vput 9 , 88*86d7f5d3SJohn Marino.Xr vref 9 , 89*86d7f5d3SJohn Marino.Xr vrele 9 90*86d7f5d3SJohn Marino.Sh AUTHORS 91*86d7f5d3SJohn MarinoThis manual page was written by 92*86d7f5d3SJohn Marino.An Doug Rabson . 93