diff options
author | 2007-05-30 04:27:42 +0000 | |
---|---|---|
committer | 2007-05-30 04:27:42 +0000 | |
commit | 8d60ccf1dac0fa992866a36d1b768dfea8bf595c (patch) | |
tree | f35a45a64e6b8cb2e61c4862046ff895e0d02388 /sys/xfs/xfs_node-bsd.c | |
parent | my (dlg says crappy) laptop requires some more delays in port_reset or (diff) | |
download | wireguard-openbsd-8d60ccf1dac0fa992866a36d1b768dfea8bf595c.tar.xz wireguard-openbsd-8d60ccf1dac0fa992866a36d1b768dfea8bf595c.zip |
back out vfs change - todd fries has seen afs issues, and I'm suspicious
this can cause other problems.
Diffstat (limited to '')
-rw-r--r-- | sys/xfs/xfs_node-bsd.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/sys/xfs/xfs_node-bsd.c b/sys/xfs/xfs_node-bsd.c index 0ceea050e63..56e4f2d3638 100644 --- a/sys/xfs/xfs_node-bsd.c +++ b/sys/xfs/xfs_node-bsd.c @@ -420,8 +420,6 @@ static struct long_entry tbl; static void tbl_clear (void) { - vdrop(tbl.vp); - vdrop(tbl.dvp); tbl.dvp = tbl.vp = NULL; tbl.name[0] = '\0'; tbl.len = 0; @@ -435,8 +433,6 @@ tbl_clear (void) static void tbl_enter (size_t len, const char *name, struct vnode *dvp, struct vnode *vp) { - vhold(vp); - vhold(dvp); tbl.len = len; bcopy(name, tbl.name, len); tbl.dvp = dvp; @@ -457,15 +453,10 @@ tbl_lookup (struct componentname *cnp, { if (tbl.dvp == dvp && tbl.len == cnp->cn_namelen - && strncmp(tbl.name, cnp->cn_nameptr, tbl.len) == 0) { -#ifdef DIAGNOSTIC - if (tbl.vpid != tbl.vp->v_id) - panic("tbl.vpid %x != tbl.vp->v_id %x", tbl.vpid, - tbl.vp->v_id); - if (tbl.dvpid != tbl.dvp->v_id) - panic("tbl.dvpid %x != tbl.dvp->v_id %x", tbl.dvpid, - tbl.dvp->v_id); -#endif + && strncmp(tbl.name, cnp->cn_nameptr, tbl.len) == 0 + && tbl.dvpid == tbl.dvp->v_id + && tbl.vpid == tbl.vp->v_id) { + *res = tbl.vp; return -1; } else @@ -676,10 +667,10 @@ xfs_dnlc_lock(struct vnode *dvp, xfs_vfs_writelock(dvp, xfs_cnp_to_proc(cnp)); #endif -#ifdef DIAGNOSTIC - if (dvp->v_id != vpid) - panic("dvp->v_id %x != vpid %x", dvp->v_id, vpid); -#endif + if (error == 0 && dvp->v_id != vpid) { + vput(*res); + return 0; + } } else { #ifdef HAVE_FREEBSD_THREAD error = xfs_do_vget(*res, LK_EXCLUSIVE, xfs_cnp_to_thread(cnp)); |