From owner-freebsd-hackers Fri Feb 19 8:50:15 1999 Delivered-To: freebsd-hackers@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 558) id 623441183A; Fri, 19 Feb 1999 08:50:13 -0800 (PST) To: dillon@FreeBSD.ORG Subject: Re: Re: softupdate panic, anyone seen this? (fwd) Cc: hackers@FreeBSD.ORG, jake@checker.org, julian@whistle.com, mckusick@McKusick.COM Message-Id: <19990219165013.623441183A@hub.freebsd.org> Date: Fri, 19 Feb 1999 08:50:13 -0800 (PST) From: hsu@FreeBSD.ORG (Jeffrey Hsu) Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > I'd appreciate it if someone could verify the double LIST_REMOVE() > bug. vn_syncer_add_to_worklist() already removes the vn from > the list ( assuming the VONWORKLIST v_flag is set, which it should be > in this case ). I've also come across the extra LIST_REMOVE in sched_sync() before and have been running the following patch which is nearly identical to yours for a few days now. The only other thing we might consider is removing the VONWORKLST flag checks which appear to be unnecessary now. But I've left them in as extra protection. Index: vfs_subr.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_subr.c,v retrieving revision 1.186 diff -c -r1.186 vfs_subr.c *** vfs_subr.c 1999/02/04 18:25:39 1.186 --- vfs_subr.c 1999/02/18 19:31:08 *************** *** 948,954 **** /* * Move ourselves to the back of the sync list. */ - LIST_REMOVE(vp, v_synclist); vn_syncer_add_to_worklist(vp, syncdelay); } } --- 948,953 ---- *************** *** 2849,2860 **** --- 2848,2865 ---- } */ *ap; { struct vnode *vp = ap->a_vp; + int s; vp->v_mount->mnt_syncer = NULL; + + s = splbio(); + if (vp->v_flag & VONWORKLST) { LIST_REMOVE(vp, v_synclist); vp->v_flag &= ~VONWORKLST; } + + splx(s); return (0); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message