Date: Fri, 19 Feb 1999 08:50:13 -0800 (PST) From: hsu@FreeBSD.ORG (Jeffrey Hsu) To: dillon@FreeBSD.ORG Cc: hackers@FreeBSD.ORG, jake@checker.org, julian@whistle.com, mckusick@McKusick.COM Subject: Re: Re: softupdate panic, anyone seen this? (fwd) Message-ID: <19990219165013.623441183A@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
> 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990219165013.623441183A>