xref: /dflybsd-src/share/man/man9/vget.9 (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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