xref: /dflybsd-src/share/man/man9/VOP_OLD_LOOKUP.9 (revision 95acdafa9c38ea581bf7c258da9389d993543f29)
1*95acdafaSAntonio Huete Jimenez.\" Copyright (c) 1996 Doug Rabson
2*95acdafaSAntonio Huete Jimenez.\"
3*95acdafaSAntonio Huete Jimenez.\" All rights reserved.
4*95acdafaSAntonio Huete Jimenez.\"
5*95acdafaSAntonio Huete Jimenez.\" This program is free software.
6*95acdafaSAntonio Huete Jimenez.\"
7*95acdafaSAntonio Huete Jimenez.\" Redistribution and use in source and binary forms, with or without
8*95acdafaSAntonio Huete Jimenez.\" modification, are permitted provided that the following conditions
9*95acdafaSAntonio Huete Jimenez.\" are met:
10*95acdafaSAntonio Huete Jimenez.\" 1. Redistributions of source code must retain the above copyright
11*95acdafaSAntonio Huete Jimenez.\"    notice, this list of conditions and the following disclaimer.
12*95acdafaSAntonio Huete Jimenez.\" 2. Redistributions in binary form must reproduce the above copyright
13*95acdafaSAntonio Huete Jimenez.\"    notice, this list of conditions and the following disclaimer in the
14*95acdafaSAntonio Huete Jimenez.\"    documentation and/or other materials provided with the distribution.
15*95acdafaSAntonio Huete Jimenez.\"
16*95acdafaSAntonio Huete Jimenez.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
17*95acdafaSAntonio Huete Jimenez.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18*95acdafaSAntonio Huete Jimenez.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19*95acdafaSAntonio Huete Jimenez.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
20*95acdafaSAntonio Huete Jimenez.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21*95acdafaSAntonio Huete Jimenez.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22*95acdafaSAntonio Huete Jimenez.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23*95acdafaSAntonio Huete Jimenez.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*95acdafaSAntonio Huete Jimenez.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25*95acdafaSAntonio Huete Jimenez.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*95acdafaSAntonio Huete Jimenez.\"
27*95acdafaSAntonio Huete Jimenez.\" $FreeBSD: src/share/man/man9/VOP_LOOKUP.9,v 1.8.2.5 2001/12/17 11:30:18 ru Exp $
28*95acdafaSAntonio Huete Jimenez.\"
29*95acdafaSAntonio Huete Jimenez.Dd October 13, 2014
30*95acdafaSAntonio Huete Jimenez.Dt VOP_OLD_LOOKUP 9
31*95acdafaSAntonio Huete Jimenez.Os
32*95acdafaSAntonio Huete Jimenez.Sh NAME
33*95acdafaSAntonio Huete Jimenez.Nm VOP_OLD_LOOKUP
34*95acdafaSAntonio Huete Jimenez.Nd lookup a component of a pathname
35*95acdafaSAntonio Huete Jimenez.Sh SYNOPSIS
36*95acdafaSAntonio Huete Jimenez.In sys/param.h
37*95acdafaSAntonio Huete Jimenez.In sys/vnode.h
38*95acdafaSAntonio Huete Jimenez.In sys/namei.h
39*95acdafaSAntonio Huete Jimenez.Ft int
40*95acdafaSAntonio Huete Jimenez.Fn VOP_OLD_LOOKUP "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp"
41*95acdafaSAntonio Huete Jimenez.Sh DESCRIPTION
42*95acdafaSAntonio Huete JimenezThis entry point looks up a single pathname component in a given directory.
43*95acdafaSAntonio Huete Jimenez.Pp
44*95acdafaSAntonio Huete JimenezIts arguments are:
45*95acdafaSAntonio Huete Jimenez.Bl -tag -width vpp
46*95acdafaSAntonio Huete Jimenez.It Fa dvp
47*95acdafaSAntonio Huete Jimenezthe locked vnode of the directory to search
48*95acdafaSAntonio Huete Jimenez.It Fa vpp
49*95acdafaSAntonio Huete Jimenezthe address of a variable where the resulting locked vnode should be stored
50*95acdafaSAntonio Huete Jimenez.It Fa cnp
51*95acdafaSAntonio Huete Jimenezthe pathname component to be searched for
52*95acdafaSAntonio Huete Jimenez.El
53*95acdafaSAntonio Huete Jimenez.Pp
54*95acdafaSAntonio Huete Jimenez.Fa Cnp
55*95acdafaSAntonio Huete Jimenezis a pointer to a componentname structure defined as follows:
56*95acdafaSAntonio Huete Jimenez.Bd -literal
57*95acdafaSAntonio Huete Jimenezstruct componentname {
58*95acdafaSAntonio Huete Jimenez	/*
59*95acdafaSAntonio Huete Jimenez	 * Arguments to lookup.
60*95acdafaSAntonio Huete Jimenez	 */
61*95acdafaSAntonio Huete Jimenez	u_long	cn_nameiop;	/* namei operation */
62*95acdafaSAntonio Huete Jimenez	u_long	cn_flags;	/* flags to namei */
63*95acdafaSAntonio Huete Jimenez	struct	thread *cn_td;	/* process requesting lookup */
64*95acdafaSAntonio Huete Jimenez	struct	ucred *cn_cred;	/* credentials */
65*95acdafaSAntonio Huete Jimenez	/*
66*95acdafaSAntonio Huete Jimenez	 * Shared between lookup and commit routines.
67*95acdafaSAntonio Huete Jimenez	 */
68*95acdafaSAntonio Huete Jimenez	char	*cn_nameptr;	/* pointer to looked up name */
69*95acdafaSAntonio Huete Jimenez	long	cn_namelen;	/* length of looked up component */
70*95acdafaSAntonio Huete Jimenez	long	cn_consume;	/* chars to consume in lookup() */
71*95acdafaSAntonio Huete Jimenez	int	cn_timeout;	/* if CNP_CACHETIMEOUT is set, in ticks */
72*95acdafaSAntonio Huete Jimenez	struct vnode *cn_notvp;	/* used by NFS to check for collision */
73*95acdafaSAntonio Huete Jimenez};
74*95acdafaSAntonio Huete Jimenez.Ed
75*95acdafaSAntonio Huete Jimenez.Pp
76*95acdafaSAntonio Huete JimenezConvert a component of a pathname into a pointer to a locked vnode.
77*95acdafaSAntonio Huete JimenezThis is a very central and rather complicated routine.
78*95acdafaSAntonio Huete JimenezIf the file system is not maintained in a strict tree hierarchy,
79*95acdafaSAntonio Huete Jimenezthis can result in a deadlock situation.
80*95acdafaSAntonio Huete Jimenez.Pp
81*95acdafaSAntonio Huete JimenezThe
82*95acdafaSAntonio Huete Jimenez.Fa cnp->cn_nameiop
83*95acdafaSAntonio Huete Jimenezargument is
84*95acdafaSAntonio Huete Jimenez.Dv NAMEI_LOOKUP ,
85*95acdafaSAntonio Huete Jimenez.Dv NAMEI_CREATE ,
86*95acdafaSAntonio Huete Jimenez.Dv NAMEI_RENAME ,
87*95acdafaSAntonio Huete Jimenezor
88*95acdafaSAntonio Huete Jimenez.Dv NAMEI_DELETE
89*95acdafaSAntonio Huete Jimenezdepending on the intended use of the object.
90*95acdafaSAntonio Huete JimenezWhen
91*95acdafaSAntonio Huete Jimenez.Dv NAMEI_CREATE ,
92*95acdafaSAntonio Huete Jimenez.Dv NAMEI_RENAME ,
93*95acdafaSAntonio Huete Jimenezor
94*95acdafaSAntonio Huete Jimenez.Dv NAMEI_DELETE
95*95acdafaSAntonio Huete Jimenezis specified, information usable in
96*95acdafaSAntonio Huete Jimenezcreating, renaming, or deleting a directory entry may be calculated.
97*95acdafaSAntonio Huete Jimenez.Pp
98*95acdafaSAntonio Huete JimenezOverall outline of VOP_LOOKUP:
99*95acdafaSAntonio Huete Jimenez.Bd -ragged -offset indent
100*95acdafaSAntonio Huete JimenezCheck accessibility of directory.
101*95acdafaSAntonio Huete JimenezLook for name in cache, if found, then return name.
102*95acdafaSAntonio Huete JimenezSearch for name in directory, goto to found or notfound as appropriate.
103*95acdafaSAntonio Huete Jimenez.Ed
104*95acdafaSAntonio Huete Jimenez.Pp
105*95acdafaSAntonio Huete Jimeneznotfound:
106*95acdafaSAntonio Huete Jimenez.Bd -ragged -offset indent
107*95acdafaSAntonio Huete JimenezIf creating or renaming and at end of pathname,
108*95acdafaSAntonio Huete Jimenezreturn
109*95acdafaSAntonio Huete Jimenez.Er EJUSTRETURN ,
110*95acdafaSAntonio Huete Jimenezleaving info on available slots else return
111*95acdafaSAntonio Huete Jimenez.Er ENOENT .
112*95acdafaSAntonio Huete Jimenez.Ed
113*95acdafaSAntonio Huete Jimenez.Pp
114*95acdafaSAntonio Huete Jimenezfound:
115*95acdafaSAntonio Huete Jimenez.Bd -ragged -offset indent
116*95acdafaSAntonio Huete JimenezIf at end of path and deleting, return information to allow delete.
117*95acdafaSAntonio Huete JimenezIf at end of path and renaming, lock target
118*95acdafaSAntonio Huete Jimenezinode and return info to allow rename.
119*95acdafaSAntonio Huete JimenezIf not at end, add name to cache; if at end and neither creating
120*95acdafaSAntonio Huete Jimeneznor deleting, add name to cache.
121*95acdafaSAntonio Huete Jimenez.Ed
122*95acdafaSAntonio Huete Jimenez.Sh LOCKS
123*95acdafaSAntonio Huete JimenezThe directory,
124*95acdafaSAntonio Huete Jimenez.Fa dvp
125*95acdafaSAntonio Huete Jimenezshould be locked on entry.
126*95acdafaSAntonio Huete JimenezIf an error (note: the return value
127*95acdafaSAntonio Huete Jimenez.Er EJUSTRETURN
128*95acdafaSAntonio Huete Jimenezis not considered an error)
129*95acdafaSAntonio Huete Jimenezis detected, it will be returned locked.
130*95acdafaSAntonio Huete JimenezOtherwise, it will be unlocked unless
131*95acdafaSAntonio Huete Jimenez.Dv CNP_LOCKPARENT
132*95acdafaSAntonio Huete Jimenezis specified in
133*95acdafaSAntonio Huete Jimenez.Fa cnp->cn_flags .
134*95acdafaSAntonio Huete JimenezIf an entry is found in the directory, it will be returned locked.
135*95acdafaSAntonio Huete Jimenez.Sh RETURN VALUES
136*95acdafaSAntonio Huete JimenezZero is returned with
137*95acdafaSAntonio Huete Jimenez.Fa *vpp
138*95acdafaSAntonio Huete Jimenezset to the locked vnode of the file if the component is found.
139*95acdafaSAntonio Huete JimenezIf the component being searched for is ".", then the vnode just has
140*95acdafaSAntonio Huete Jimenezan extra reference added to it with
141*95acdafaSAntonio Huete Jimenez.Xr vref 9 .
142*95acdafaSAntonio Huete JimenezThe caller must take care to release the locks appropriately in this
143*95acdafaSAntonio Huete Jimenezcase.
144*95acdafaSAntonio Huete Jimenez.Pp
145*95acdafaSAntonio Huete JimenezIf the component is not found and the operation is
146*95acdafaSAntonio Huete Jimenez.Dv NAMEI_CREATE
147*95acdafaSAntonio Huete Jimenezor
148*95acdafaSAntonio Huete Jimenez.Dv NAMEI_RENAME
149*95acdafaSAntonio Huete Jimenezthe special return value
150*95acdafaSAntonio Huete Jimenez.Er EJUSTRETURN
151*95acdafaSAntonio Huete Jimenezis returned.
152*95acdafaSAntonio Huete JimenezOtherwise, an appropriate error code is returned.
153*95acdafaSAntonio Huete Jimenez.Sh ERRORS
154*95acdafaSAntonio Huete Jimenez.Bl -tag -width Er
155*95acdafaSAntonio Huete Jimenez.It Bq Er ENOTDIR
156*95acdafaSAntonio Huete JimenezThe vnode
157*95acdafaSAntonio Huete Jimenez.Fa dvp
158*95acdafaSAntonio Huete Jimenezdoes not represent a directory.
159*95acdafaSAntonio Huete Jimenez.It Bq Er ENOENT
160*95acdafaSAntonio Huete JimenezThe component
161*95acdafaSAntonio Huete Jimenez.Fa dvp
162*95acdafaSAntonio Huete Jimenezwas not found in this directory.
163*95acdafaSAntonio Huete Jimenez.It Bq Er EACCES
164*95acdafaSAntonio Huete Jimenezaccess for the specified operation is denied.
165*95acdafaSAntonio Huete Jimenez.It Bq Er EJUSTRETURN
166*95acdafaSAntonio Huete Jimeneza
167*95acdafaSAntonio Huete Jimenez.Dv NAMEI_CREATE
168*95acdafaSAntonio Huete Jimenezor
169*95acdafaSAntonio Huete Jimenez.Dv NAMEI_RENAME
170*95acdafaSAntonio Huete Jimenezoperation would be successful
171*95acdafaSAntonio Huete Jimenez.El
172*95acdafaSAntonio Huete Jimenez.Sh SEE ALSO
173*95acdafaSAntonio Huete Jimenez.Xr vnode 9 ,
174*95acdafaSAntonio Huete Jimenez.Xr VOP_ACCESS 9 ,
175*95acdafaSAntonio Huete Jimenez.Xr VOP_OLD_CREATE 9 ,
176*95acdafaSAntonio Huete Jimenez.Xr VOP_OLD_MKDIR 9 ,
177*95acdafaSAntonio Huete Jimenez.Xr VOP_OLD_MKNOD 9 ,
178*95acdafaSAntonio Huete Jimenez.Xr VOP_OLD_RENAME 9 ,
179*95acdafaSAntonio Huete Jimenez.Xr VOP_OLD_SYMLINK 9
180*95acdafaSAntonio Huete Jimenez.Sh HISTORY
181*95acdafaSAntonio Huete JimenezThe function
182*95acdafaSAntonio Huete Jimenez.Nm
183*95acdafaSAntonio Huete Jimenezappeared in
184*95acdafaSAntonio Huete Jimenez.Bx 4.3 .
185*95acdafaSAntonio Huete Jimenez.Sh AUTHORS
186*95acdafaSAntonio Huete JimenezThis man page was written by
187*95acdafaSAntonio Huete Jimenez.An Doug Rabson ,
188*95acdafaSAntonio Huete Jimenezwith some text from comments in
189*95acdafaSAntonio Huete Jimenez.Pa sys/vfs/ufs/ufs_lookup.c .
190