Skip site navigation (1)Skip section navigation (2)
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>