doc/ja_JP.eucJP/man/man9/VOP_LOOKUP.9

456 lines
12 KiB
Groff
Raw Normal View History

.\" -*- nroff -*-
.\"
.\" Copyright (c) 1996 Doug Rabson
.\"
.\" All rights reserved.
.\"
.\" This program is free software.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.\" %FreeBSD: src/share/man/man9/VOP_LOOKUP.9,v 1.21 2004/07/08 00:36:58 alfred Exp %
.\"
.\" $FreeBSD$
.Dd November 24, 1997
.Os
.Dt VOP_LOOKUP 9
.Sh ̾<EFBFBD><EFBFBD>
.Nm VOP_LOOKUP
.Nd <EFBFBD>ѥ<EFBFBD>̾<EFBFBD>ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>Ĵ<EFBFBD><EFBFBD>
.Sh <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.In sys/param.h
.In sys/vnode.h
.In sys/namei.h
.Ft int
.Fn VOP_LOOKUP "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp"
.Sh <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ݥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>Υѥ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>Ĵ<EFBFBD>٤ޤ<EFBFBD><EFBFBD><EFBFBD>
.Pp
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰʲ<EFBFBD><EFBFBD>ΤȤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
.Bl -tag -width vpp
.It Fa dvp
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 vnode <20>Ǥ<EFBFBD><C7A4><EFBFBD>
.It Fa vpp
<EFBFBD><EFBFBD><EFBFBD>̤Υ<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 vnode <20><><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>٤<EFBFBD><D9A4>ѿ<EFBFBD><D1BF>Υ<EFBFBD><CEA5>ɥ쥹<C9A5>Ǥ<EFBFBD><C7A4><EFBFBD>
.It Fa cnp
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EFBFBD><EFBFBD>Υѥ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>ǤǤ<EFBFBD><EFBFBD><EFBFBD>
.El
.Pp
.Fa cnp
<EFBFBD>ϰʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD> componentname <20><>¤<EFBFBD>ΤؤΥݥ<CEA5><DDA5>󥿤Ǥ<F3A5BFA4><C7A4><EFBFBD>
.Bd -literal
struct componentname {
/*
* lookup <20>ؤΰ<D8A4><CEB0><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD>
*/
u_long cn_nameiop; /* namei <20><><EFBFBD><EFBFBD> */
u_long cn_flags; /* namei <20>ؤΥե饰 */
struct thread *cn_thread; /* lookup <20><><EFBFBD>׵ᤷ<D7B5>Ƥ<EFBFBD><C6A4><EFBFBD><EBA5B9><EFBFBD>å<EFBFBD> */
struct ucred *cn_cred; /* <20><><EFBFBD><EFBFBD> */
/*
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA1BC><EFBFBD>󤪤<EFBFBD><F3A4AAA4>ӥ<EFBFBD><D3A5>ߥåȥ롼<C8A5><EBA1BC><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>ͭ<EFBFBD><CDAD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
char *cn_pnbuf; /* <20>ѥ<EFBFBD>̾<EFBFBD>Хåե<C3A5> */
char *cn_nameptr; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿̾<ECA4BF><CCBE><EFBFBD>ؤΥݥ<CEA5><DDA5><EFBFBD><EFBFBD><EFBFBD> */
long cn_namelen; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><ECA4BF><EFBFBD>Ǥ<EFBFBD>Ĺ<EFBFBD><C4B9> */
u_long cn_hash; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿̾<ECA4BF><CCBE><EFBFBD>Υϥå<CFA5><C3A5><EFBFBD><EFBFBD><EFBFBD> */
long cn_consume; /* lookup() <20>Ǿ<EFBFBD><C7BE>񤹤<EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD> */
};
.Ed
.Pp
<EFBFBD>ѥ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 vnode <20>ؤΥݥ<CEA5><DDA5>󥿤<EFBFBD><F3A5BFA4>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD>ʥ롼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƥब<EFBFBD><EFBFBD>̩<EFBFBD>ʥĥ꡼<EFBFBD><EFBFBD><EFBFBD>ؤ<EFBFBD><EFBFBD>ݤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>
<EFBFBD>ǥåɥ<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤˴٤뤳<EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Pp
.Fa cnp->cn_nameiop
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD>˰<EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Dv LOOKUP ,
.Dv CREATE ,
.Dv RENAME ,
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Dv DELETE
<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
.Dv CREATE ,
.Dv RENAME ,
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Dv DELETE
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD>Ȥ<EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥꥨ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󤬷׻<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Pp
VOP_LOOKUP <20><><EFBFBD><EFBFBD><EFBFBD>Τγ<CEA4><CEB3>פǤ<D7A4><C7A4><EFBFBD>
.Bd -ragged -offset indent
<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>򸡺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>򸡺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>found <20>ޤ<EFBFBD><DEA4><EFBFBD> notfound <20><>Ŭ<EFBFBD>ڤ˿ʤߤޤ<DFA4><DEA4><EFBFBD>
.Ed
.Pp
notfound:
.Bd -ragged -offset indent
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ǥѥ<EFBFBD>̾<EFBFBD>κǸ<EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>
.Er EJUSTRETURN
<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳ<EFBFBD>ǽ<EFBFBD>ʰ<EFBFBD><EFBFBD>֤˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Er ENOENT
<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Ed
.Pp
found:
.Bd -ragged -offset indent
<EFBFBD>ѥ<EFBFBD>̾<EFBFBD>κǸ<EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ѥ<EFBFBD>̾<EFBFBD>κǸ<EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> inode <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD>
̾<EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD>ˤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ǹ<EFBFBD><EFBFBD>Ǥʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>򥭥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>Ǹ<EFBFBD><EFBFBD>Ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>̾<EFBFBD><EFBFBD><EFBFBD>򥭥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Ed
.Sh <EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>
<EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD>
.Fa dvp
<EFBFBD>ϥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>٤<EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>顼 (<28><>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Er EJUSTRETURN
<EFBFBD>ϥ<EFBFBD><EFBFBD><EFBFBD>ȤϤߤʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD>Ф<EFBFBD><D0A4>줿<EFBFBD><ECA4BF><EFBFBD><EFBFBD><EFBFBD>ˤϡ<CBA4><CFA1><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>줿<EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD>
.Fa cnp->cn_flags
<EFBFBD><EFBFBD>
.Dv LOCKPARENT
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Dv ISLASTCN
<EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ꤬<EFBFBD><EFBFBD><EFBFBD>Υǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Sh <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ä<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>
.Fa *vpp
<EFBFBD>ˤ<EFBFBD><EFBFBD>Υե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿 vnode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA4B5><EFBFBD>ơ<EFBFBD>0 <20><><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD> "." <20>ξ<EFBFBD><CEBE><EFBFBD><E7A1A2><EFBFBD><EFBFBD> vnode <20><>
.Xr vref 9
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɲä<EFBFBD><EFBFBD>줿;ʬ<EFBFBD>ʻ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>ξ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><EFBFBD>ƤӽФ<EFBFBD>¦<EFBFBD><EFBFBD>Ŭ<EFBFBD>ڤ˥<EFBFBD><EFBFBD>å<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Фʤ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Pp
<EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Dv CREATE
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Dv RENAME
<EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD><EFBFBD>ե饰
.Dv ISLASTCN
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Er EJUSTRETURN
<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<EFBFBD>Ŭ<EFBFBD>ڤʥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Sh <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Bd -literal
int
vop_lookup(struct vnode *dvp,
struct vnode **vpp,
struct componentname *cnp)
{
int error;
int nameiop = cnp->cn_nameiop;
int flags = cnp->cn_flags;
int lockparent = flags & LOCKPARENT;
int islastcn = flags & ISLASTCN;
struct vnode *vp = NULL;
/*
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
if (dvp->v_type != VDIR)
return ENOTDIR;
error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_thread);
if (error)
return (error);
if (islastcn && (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME))
return (EROFS);
/*
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><><CCBE><EFBFBD>Υڥ<CEA5><DAA5>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>¸<EFBFBD>ߤ<EFBFBD><DFA4>Ƥ<EFBFBD><C6A4>ʤ<EFBFBD>̾<EFBFBD><CCBE><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ˤ<EFBFBD> ENOENT <20><><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><C4A4>ä<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD> -1 <20>򡢤<EFBFBD><F2A1A2A4><EFBFBD><EFBFBD>Ǥʤ<C7A4><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD> 0 <20><><EFBFBD>֤<EFBFBD><D6A4>ޤ<EFBFBD><DEA4><EFBFBD>
*/
error = cache_lookup(dvp, vpp, cnp);
if (error) {
int vpid;
if (error = ENOENT)
return error;
vp = *vpp;
if (dvp == vp) { /* "." <20><><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ޤ<EFBFBD> */
VREF(vp);
error = 0;
} else if (flags & ISDOTDOT) {
/*
* <20>ǥåɥ<C3A5><C9A5>å<EFBFBD><C3A5><EFBFBD><EFBFBD>򤱤뤿<F2A4B1A4>ᡢ".." <20>Υ<EFBFBD><CEA5>å<EFBFBD><C3A5><EFBFBD><EFBFBD>줿 vnode <20><>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD><EFBFBD>Υǥ<CEA5><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>򥢥<EFBFBD><F2A5A2A5><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פ<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
VOP_UNLOCK(dvp);
error = vget(vp, 1);
if (!error) {
if (lockparent && islastcn)
error = VOP_LOCK(dvp);
}
} else {
error = vget(vp, 1);
if (error || !(lockparent && islastcn)) {
VOP_UNLOCK(dvp);
}
}
/*
* <20><><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ԤäƤ<C3A4><C6A4><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD>Ѳ<EFBFBD><D1B2><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Ȥ<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
if (!error) {
if (vpid == vp->v_id) {
/*
* lockparent && islastcn <20>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ˤ<EFBFBD> dvp <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD> vp <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
return (0);
}
vput(vp);
if (dvp != vp && lockparent && islastcn)
VOP_UNLOCK(pdp);
}
/*
* <20>ʲ<EFBFBD><CAB2>Υǥ<CEA5><C7A5><EFBFBD>ȥ긡<C8A5><EAB8A1><EFBFBD>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD> dvp <20><><EFBFBD><EFBFBD><EFBFBD>٥<EFBFBD><D9A5>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
error = VOP_LOCK(dvp);
if (error) {
return (error);
}
*vpp = NULL;
}
/*
* <20><><EFBFBD><EFBFBD> cnp->cn_nameptr <20>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD> dvp <20>򸡺<EFBFBD><F2B8A1BA><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
...;
if (!found) {
if ((nameiop == CREATE || nameiop == RENAME)
&& islastcn
&& directory dvp has not been removed) {
/*
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>߸<EFBFBD><DFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
/*
* <20>Ǥ<EFBFBD><C7A4><EFBFBD><EFBFBD>¤ꡢ<C2A4>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD>̾<EFBFBD><CCBE><EFBFBD>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD>
* <20><>ʬ<EFBFBD><CAAC><EFBFBD><EFBFBD><E7A4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΰ<EFBFBD><CEB0>֤<EFBFBD><D6A4><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dvp <20>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD>
* vnode <20>λ<EFBFBD>Ū<EFBFBD>ǡ<EFBFBD><C7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD>ǽ<EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD>
* VOP_CREATE <20>ޤ<EFBFBD><DEA4><EFBFBD> VOP_RENAME <20>Ǹ<EFBFBD><C7B8>ǻ<EFBFBD><C7BB>Ѥ<EFBFBD><D1A4>뤿<EFBFBD><EBA4BF><EFBFBD>ˡ<EFBFBD>
* <20>ѥ<EFBFBD>̾<EFBFBD><CCBE><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD>뤿<EFBFBD><EBA4BF><EFBFBD><EFBFBD> SAVENAME <20>ե饰<D5A5><E9A5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
cnp->cn_flags |= SAVENAME;
if (!lockparent)
/*
* <20><EFBFBD>ǵ<EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD>줿<EFBFBD>ɲäΥǡ<CEA5><C7A1><EFBFBD><EFBFBD><EFBFBD> lockparent <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>줿<EFBFBD><ECA4BF><EFBFBD>ˤΤ<CBA4>ͭ<EFBFBD>ѤǤ<D1A4><C7A4><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>դ<EFBFBD><D5A4>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
VOP_UNLOCK(dvp);
return EJUSTRETURN;
}
/*
* <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD>θ<EFBFBD><CEB8><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
cache_enter(dvp, NULL, cnp);
return ENOENT;
} else {
/*
* <20><><EFBFBD><EFBFBD><EFBFBD>ǥѥ<C7A5>̾<EFBFBD>κǸ<CEBA><C7B8>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ˤϡ<CBA4><CFA1>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ѤǤ<D1A4><C7A4><EFBFBD>
* <20>ѥ<EFBFBD><D1A5><EFBFBD><E1A1BC><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ޤ<EFBFBD><DEA4><EFBFBD> wantparent <20>ե饰<D5A5><E9A5B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA4B5><EFBFBD>Ƥ<EFBFBD><C6A4>ʤ<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ˤϤ<CBA4><CFA4>Υǥ<CEA5><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>Τߤ<CEA4><DFA4>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥʤ<C7A4><CAA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD>
* ³<><C2B3><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD> inode <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD>"." <20><><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><D5A4>ޤ<EFBFBD><DEA4><EFBFBD>
*/
if (nameiop == DELETE && islastcn) {
/*
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>ν<EFBFBD><CEBD><EFBFBD><EFBFBD>߸<EFBFBD><DFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
if (error)
return (error);
if (found entry is same as dvp) {
VREF(dvp);
*vpp = dvp;
return 0;
}
error = VFS_VGET(dvp->v_mount, ..., &vp);
if (error)
return error;
if (directory is sticky
&& cred->cr_uid != 0
&& cred->cr_uid != owner of dvp
&& owner of vp != cred->cr_uid) {
vput(vp);
return EPERM;
}
*vpp = vp;
if (!lockparent)
VOP_UNLOCK(dvp);
return 0;
}
/*
* <20>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD> (RENAME) <20>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD>ˤϡ<CBA4><CFA1><EFBFBD><EFBFBD><EFBFBD> inode <20><><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><D3B8>ߤ<EFBFBD>
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ߤ<EFBFBD><DFA4>뤿<EFBFBD><EBA4BF><EFBFBD><EFBFBD><EFBFBD>׵ᤵ<D7B5><E1A4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>ޤ<EFBFBD><DEA4><EFBFBD>
* <20>̾<EFBFBD><CCBE>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4>϶<EFBFBD><CFB6>Υǥ<CEA5><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>Ǥ<EFBFBD><C7A4><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD>ǧ<EFBFBD><C7A7><EFBFBD>뤿<EFBFBD><EBA4BF><EFBFBD>ˡ<EFBFBD>
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥꥨ<C8A5><EAA5A8><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD> inode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Фʤ<D0A4><CAA4>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD>
*/
if (nameiop == RENAME && wantparent && islastcn) {
error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
if (error)
return (error);
/*
* "." <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
if (found entry is same as dvp)
return EISDIR;
error = VFS_VGET(dvp->v_mount, ..., &vp);
if (error)
return error;
*vpp = vp;
/*
* <20><><EFBFBD><EFBFBD> VOP_RENAME <20>ǻ<EFBFBD><C7BB>Ѥ<EFBFBD><D1A4>뤿<EFBFBD><EBA4BF><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
cnp->cn_flags |= SAVENAME;
if (!lockparent)
VOP_UNLOCK(dvp);
return 0;
}
/*
* ̾<><CCBE><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4>Υ<EFBFBD><CEA5>ƥåפ<C3A5><D7A4><EFBFBD><EFBFBD>ƤǤ<C6A4><C7A4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ܥ<EFBFBD><DCA5>å<EFBFBD><C3A5><EFBFBD><EFBFBD>󥯤<EFBFBD><F3A5AFA4><EFBFBD><EFBFBD>ߤ<EFBFBD>
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ꤫<C8A5><EAA4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ФǤ<D0A4><C7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤϡ<CBA4><CFA1><EFBFBD><EFBFBD><EFBFBD>ɬ<EFBFBD>פˤʤ<CBA4><CAA4>Τǡ<CEA4>
* <20>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD> 'vput' <20><><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "pdp" <20>Ȥ<EFBFBD><C8A4><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>줿<EFBFBD>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˤ<EFBFBD><CBA4><EFBFBD>
* inode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4>ݾڤ<DDBE><DAA4>뤿<EFBFBD><EBA4BF><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD><EFBFBD>Υǥ<CEA5><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><C5AA> inode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Фʤ<D0A4><CAA4>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD>
* <20><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>ĥ꡼<C4A5>򲼤<EFBFBD><F2B2BCA4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> inode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>Ȥǡ<C8A4><C7A1>ǥåɥ<C3A5><C9A5>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD>ɤ<EFBFBD><C9A4>ޤ<EFBFBD><DEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>äơ<C3A4><C6A1>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>
* <20>ݥ<EFBFBD><DDA5><EFBFBD><EFBFBD><EFBFBD> ".." <20><>é<EFBFBD><C3A9><EFBFBD>Ȥ<EFBFBD><C8A4>ˤϡ<CBA4><CFA1>׵ᤵ<D7B5>줿<EFBFBD>ǥ<EFBFBD><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>˿ƥǥ<C6A5><C7A5><EFBFBD>ȥ<EFBFBD><C8A5>򥢥<EFBFBD><F2A5A2A5><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Фʤ<D0A4><CAA4>ޤ<EFBFBD><DEA4><EFBFBD><EFBFBD><EFBFBD> ".." <20><>
* <20><>Ϣ<EFBFBD>դ<EFBFBD><D5A4><EFBFBD><EFBFBD>줿 inode <20>Τ<EFBFBD><CEA4><EFBFBD><EFBFBD><EFBFBD> VFS_VGET <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˡ<EFBFBD><CBA1><EFBFBD><EFBFBD>ߤ<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD>ӿƥǥ<C6A5><C7A5><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD>ξ<EFBFBD><CEBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><ECA4BF><EFBFBD><EFBFBD><EFBFBD>ˤϡ<CBA4><CFA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ū<EFBFBD><C5AA>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>ʥǥåɥ<C3A5><C9A5>å<EFBFBD><C3A5><EFBFBD><EFBFBD>Х<EFBFBD><D0A5><EFBFBD><EFBFBD><EAA5BA>
* <20>μ<EFBFBD><CEBC><EFBFBD><EFBFBD>ʤ<EFBFBD><CAA4>ˤ<EFBFBD><CBA4>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4>򤱤뤳<F2A4B1A4>Ȥ<EFBFBD><C8A4>Ǥ<EFBFBD><C7A4>ʤ<EFBFBD><CAA4>Τǡ<CEA4><C7A1><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD>ȯ<EFBFBD><C8AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>Ԥ<EFBFBD><D4A4>Ƥ<EFBFBD><C6A4>ޤ<EFBFBD><DEA4><EFBFBD> <20>ե<EFBFBD><D5A5><EFBFBD><EFBFBD><EFBFBD><EBA5B7><EFBFBD>ƥब<C6A5><E0A4AC>
* ".." <20>ʳ<EFBFBD><CAB3>ˡ<EFBFBD><CBA1>ǥ<EFBFBD><C7A5><EFBFBD>ȥ깽¤<EAB9BD><C2A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̤<EFBFBD><CCA4><EFBFBD><EFBFBD>ؤ<EFBFBD><D8A4>ϡ<EFBFBD><CFA1>ɥ<EFBFBD><C9A5>󥯤<EFBFBD>
* <20><><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD><E7A1A2><EFBFBD>δ<EFBFBD>ñ<EFBFBD>ʥǥåɥ<C3A5><C9A5>å<EFBFBD><C3A5><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>Ư<EFBFBD><C6AF><EFBFBD>ʤ<EFBFBD><CAA4><EFBFBD><EFBFBD>Ȥˤ<C8A4><CBA4><EFBFBD><EFBFBD><EFBFBD>
* <20><><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
if (flags & ISDOTDOT) {
VOP_UNLOCK(dvp); /* inode <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뤿<EFBFBD><EBA4BF><EFBFBD>ζ<EFBFBD><CEB6><EFBFBD><EFBFBD>Ǥ<EFBFBD> */
error = VFS_VGET(dvp->v_mount, ..., &vp);
if (error) {
VOP_LOCK(dvp);
return (error);
}
if (lockparent && islastcn) {
error = VOP_LOCK(dvp);
if (error) {
vput(vp);
return error;
}
}
*vpp = vp;
} else if (found entry is same as dvp) {
VREF(dvp); /* <20><EFBFBD><E3A4A8> "." <20>ʤɡ<CAA4><C9A1><EFBFBD>ʬ<EFBFBD><CAAC><EFBFBD>Ȥ<EFBFBD>ɬ<EFBFBD>פǤ<D7A4> */
*vpp = dvp;
} else {
error = VFS_VGET(dvp->v_mount, ..., &vp);
if (error)
return (error);
if (!lockparent || !islastcn)
VOP_UNLOCK(dvp);
*vpp = vp;
}
/*
* Ŭ<>ڤǤ<DAA4><C7A4><EFBFBD><EFBFBD><EFBFBD>̾<EFBFBD><CCBE><EFBFBD>򥭥<EFBFBD><F2A5ADA5>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
*/
if (cnp->cn_flags & MAKEENTRY)
cache_enter(dvp, *vpp, cnp);
return (0);
}
}
.Ed
.Sh <EFBFBD><EFBFBD><EFBFBD>
.Bl -tag -width Er
.It Bq Er ENOTDIR
vnode
.Fa dvp
<EFBFBD><EFBFBD><EFBFBD>ǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD><EFBFBD>ɽ<EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.It Bq Er ENOENT
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Fa dvp
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υǥ<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ˤϸ<EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.It Bq Er EACCES
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>줿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Τ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.It Bq Er EJUSTRETURN
.Dv CREATE
<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
.Dv RENAME
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><EFBFBD><EFBFBD>
.El
.Sh <EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Xr VOP_ACCESS 9 ,
.Xr VOP_CREATE 9 ,
.Xr VOP_MKDIR 9 ,
.Xr VOP_MKNOD 9 ,
.Xr VOP_RENAME 9 ,
.Xr VOP_SYMLINK 9 ,
.\" <20><><EFBFBD>δ<EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ܤ<EFBFBD><DCA4>ޡ<EFBFBD><DEA1><EFBFBD> by A.Ikeuchi<68><69>
.Xr vnode 9
.Sh <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD>ؿ<EFBFBD>
.Nm
<EFBFBD><EFBFBD>
.Bx 4.3
<EFBFBD><EFBFBD><EFBFBD>о<EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.\" <20><><EFBFBD>δ<EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>ܤ˥ޡ<CBA5><DEA1><EFBFBD> by A.Ikeuchi<68><69>
.\" .Sh <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
.\" .Xr vnode 9
.Sh <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>Υޥ˥奢<EFBFBD><EFBFBD><EFBFBD>ڡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.Pa ufs_lookup.c
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Υƥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>Ȥäơ<EFBFBD>
.An Doug Rabson
<EFBFBD><EFBFBD><EFBFBD>񤭤ޤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>