From owner-freebsd-stable Fri Mar 8 04:28:58 1996 Return-Path: owner-stable Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id EAA08003 for stable-outgoing; Fri, 8 Mar 1996 04:28:58 -0800 (PST) Received: from Root.COM (implode.Root.COM [198.145.90.17]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id EAA07998 for ; Fri, 8 Mar 1996 04:28:55 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by Root.COM (8.6.12/8.6.5) with SMTP id EAA00864; Fri, 8 Mar 1996 04:29:16 -0800 Message-Id: <199603081229.EAA00864@Root.COM> X-Authentication-Warning: implode.Root.COM: Host localhost didn't use HELO protocol To: rich@lamprey.utmb.edu cc: stable@FreeBSD.ORG Subject: Re: free vnode isn't In-reply-to: Your message of "Thu, 07 Mar 1996 21:29:03 CST." <199603080329.VAA01748@rich.isdn.bcm.tmc.edu> From: David Greenman Reply-To: davidg@Root.COM Date: Fri, 08 Mar 1996 04:29:16 -0800 Sender: owner-stable@FreeBSD.ORG X-Loop: owner-stable@FreeBSD.ORG Precedence: bulk >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);