Date: Fri, 08 Mar 1996 04:29:16 -0800 From: David Greenman <davidg@Root.COM> To: rich@lamprey.utmb.edu Cc: stable@FreeBSD.ORG Subject: Re: free vnode isn't Message-ID: <199603081229.EAA00864@Root.COM> In-Reply-To: Your message of "Thu, 07 Mar 1996 21:29:03 CST." <199603080329.VAA01748@rich.isdn.bcm.tmc.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
>I've got three crashdumps on today's -stable kernel,
>two after 'free vnode isn't' panics and one after a
>'page fault' panic this morning on a 486/eisa system.
>I hope this help someone. I still have the dumps if
>someone would like me to search for more info in them.
Hi Rich...
Please try out the attached patch and see if it makes the problem go away.
It's basically a patch Bruce came up with the other day that I've modified
slightly and adapted to -stable.
-DG
David Greenman
Core-team/Principal Architect, The FreeBSD Project
Index: ufs_vnops.c
===================================================================
RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_vnops.c,v
retrieving revision 1.24.4.3
diff -c -r1.24.4.3 ufs_vnops.c
*** 1.24.4.3 1995/10/26 09:17:50
--- ufs_vnops.c 1996/03/08 12:26:31
***************
*** 842,848 ****
if ((fcnp->cn_flags & SAVESTART) == 0)
panic("ufs_rename: lost from startdir");
fcnp->cn_nameiop = DELETE;
! (void) relookup(fdvp, &fvp, fcnp);
return (VOP_REMOVE(fdvp, fvp, fcnp));
}
error = VOP_LOCK(fvp);
--- 842,851 ----
if ((fcnp->cn_flags & SAVESTART) == 0)
panic("ufs_rename: lost from startdir");
fcnp->cn_nameiop = DELETE;
! VREF(fdvp);
! error = relookup(fdvp, &fvp, fcnp);
! if (error == 0)
! vrele(fdvp);
return (VOP_REMOVE(fdvp, fvp, fcnp));
}
error = VOP_LOCK(fvp);
***************
*** 920,928 ****
--- 923,933 ----
goto out;
if ((tcnp->cn_flags & SAVESTART) == 0)
panic("ufs_rename: lost to startdir");
+ VREF(tdvp);
error = relookup(tdvp, &tvp, tcnp);
if (error)
goto out;
+ vrele(tdvp);
dp = VTOI(tdvp);
xp = NULL;
if (tvp)
***************
*** 1047,1053 ****
fcnp->cn_flags |= LOCKPARENT | LOCKLEAF;
if ((fcnp->cn_flags & SAVESTART) == 0)
panic("ufs_rename: lost from startdir");
! (void) relookup(fdvp, &fvp, fcnp);
if (fvp != NULL) {
xp = VTOI(fvp);
dp = VTOI(fdvp);
--- 1052,1061 ----
fcnp->cn_flags |= LOCKPARENT | LOCKLEAF;
if ((fcnp->cn_flags & SAVESTART) == 0)
panic("ufs_rename: lost from startdir");
! VREF(fdvp);
! error = relookup(fdvp, &fvp, fcnp);
! if (error == 0)
! vrele(fdvp);
if (fvp != NULL) {
xp = VTOI(fvp);
dp = VTOI(fdvp);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603081229.EAA00864>
