2002-09-01 09:12:09 +02:00
|
|
|
|
.\" -*- 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.
|
|
|
|
|
.\"
|
2004-09-21 23:00:59 +02:00
|
|
|
|
.\" %FreeBSD: src/share/man/man9/VOP_LOOKUP.9,v 1.21 2004/07/08 00:36:58 alfred Exp %
|
2002-09-01 09:12:09 +02:00
|
|
|
|
.\"
|
|
|
|
|
.\" $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
|
2003-07-17 08:02:30 +02:00
|
|
|
|
.It Fa dvp
|
2002-09-01 09:12:09 +02:00
|
|
|
|
<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>
|
2003-07-17 08:02:30 +02:00
|
|
|
|
.It Fa vpp
|
2002-09-01 09:12:09 +02:00
|
|
|
|
<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>
|
2003-07-17 08:02:30 +02:00
|
|
|
|
.It Fa cnp
|
2002-09-01 09:12:09 +02:00
|
|
|
|
<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>ؤΥե饰 */
|
2004-10-11 10:23:01 +02:00
|
|
|
|
struct thread *cn_thread; /* lookup <20><><EFBFBD>ᤷ<D7B5>Ƥ<EFBFBD><C6A4>륹<EFBFBD><EBA5B9><EFBFBD>å<EFBFBD> */
|
2002-09-01 09:12:09 +02:00
|
|
|
|
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
|
2004-09-21 23:00:59 +02:00
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѳ<EFBFBD>ǽ<EFBFBD>ʰ<EFBFBD><EFBFBD>֤˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǥʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
.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;
|
|
|
|
|
|
2004-09-21 23:00:59 +02:00
|
|
|
|
error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_thread);
|
2002-09-01 09:12:09 +02:00
|
|
|
|
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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <20><><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD> vp <20><><EFBFBD><EFBFBD><EFBFBD>å<EFBFBD><C3A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
*/
|
|
|
|
|
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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* 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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* <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>
|
|
|
|
|
*/
|
2004-09-21 23:00:59 +02:00
|
|
|
|
error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
|
2002-09-01 09:12:09 +02:00
|
|
|
|
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) {
|
2004-09-21 23:00:59 +02:00
|
|
|
|
error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
|
2002-09-01 09:12:09 +02:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* ̾<><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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* <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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* 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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* <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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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><>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* <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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* <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>
|
2004-09-21 23:00:59 +02:00
|
|
|
|
* <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>
|
2002-09-01 09:12:09 +02:00
|
|
|
|
* ".." <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>
|