Subject: Re: CVS commit: src/sys/miscfs/kernfs
To: Jun-ichiro itojun Hagino <itojun@itojun.org>
From: enami tsugutomo <enami@sm.sony.co.jp>
List: source-changes
Date: 09/10/2003 11:30:17
itojun@itojun.org (Jun-ichiro itojun Hagino) writes:
> ooops. i'll look into it.
You need to test struct kern_target * to identify the node.
enami.
Index: kernfs_subr.c
===================================================================
RCS file: /cvsroot/src/sys/miscfs/kernfs/kernfs_subr.c,v
retrieving revision 1.1
diff -u -r1.1 kernfs_subr.c
--- kernfs_subr.c 8 Sep 2003 06:51:53 -0000 1.1
+++ kernfs_subr.c 10 Sep 2003 02:19:11 -0000
@@ -104,7 +104,8 @@
void kernfs_hashins __P((struct kernfs_node *));
void kernfs_hashrem __P((struct kernfs_node *));
-struct vnode *kernfs_hashget __P((kfstype, struct mount *, u_int32_t));
+struct vnode *kernfs_hashget __P((kfstype, struct mount *,
+ const struct kern_target *, u_int32_t));
static LIST_HEAD(kfs_hashhead, kernfs_node) *kfs_hashtbl;
static u_long kfs_ihash; /* size of hash table - 1 */
@@ -155,7 +156,7 @@
long *cookie;
do {
- if ((*vpp = kernfs_hashget(kfs_type, mp, value)) != NULL)
+ if ((*vpp = kernfs_hashget(kfs_type, mp, kt, value)) != NULL)
return (0);
} while (lockmgr(&kfs_hashlock, LK_EXCLUSIVE|LK_SLEEPFAIL, 0));
@@ -335,9 +336,10 @@
}
struct vnode *
-kernfs_hashget(type, mp, value)
+kernfs_hashget(type, mp, kt, value)
kfstype type;
struct mount *mp;
+ const struct kern_target *kt;
u_int32_t value;
{
struct kfs_hashhead *ppp;
@@ -350,7 +352,7 @@
LIST_FOREACH(pp, ppp, kfs_hash) {
vp = KERNFSTOV(pp);
if (pp->kfs_type == type && vp->v_mount == mp &&
- pp->kfs_value == value) {
+ pp->kfs_kt == kt && pp->kfs_value == value) {
simple_lock(&vp->v_interlock);
simple_unlock(&kfs_hash_slock);
if (vget(vp, LK_EXCLUSIVE | LK_INTERLOCK))