From owner-freebsd-bugs Tue Mar 4 12:30:03 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id MAA13944 for bugs-outgoing; Tue, 4 Mar 1997 12:30:03 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id MAA13938; Tue, 4 Mar 1997 12:30:01 -0800 (PST) Date: Tue, 4 Mar 1997 12:30:01 -0800 (PST) Message-Id: <199703042030.MAA13938@freefall.freebsd.org> To: freebsd-bugs Cc: From: David Greenman Subject: Re: kern/2875: vinvalbuf() clobbers b_vnbufs chain Reply-To: David Greenman Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR kern/2875; it has been noted by GNATS. From: David Greenman To: kato@eclogite.eps.nagoya-u.ac.jp Cc: FreeBSD-gnats-submit@FreeBSD.org Subject: Re: kern/2875: vinvalbuf() clobbers b_vnbufs chain Date: Tue, 04 Mar 1997 12:21:09 -0800 Hmmm, the fix seems overly complicated. How about this instead: Index: vfs_subr.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_subr.c,v retrieving revision 1.64.2.2 diff -c -r1.64.2.2 vfs_subr.c *** vfs_subr.c 1997/02/28 11:11:50 1.64.2.2 --- vfs_subr.c 1997/03/04 20:17:51 *************** *** 502,510 **** error = tsleep((caddr_t) bp, slpflag | (PRIBIO + 1), "vinvalbuf", slptimeo); ! splx(s); ! if (error) return (error); break; } bremfree(bp); --- 502,511 ---- error = tsleep((caddr_t) bp, slpflag | (PRIBIO + 1), "vinvalbuf", slptimeo); ! if (error) { ! splx(s); return (error); + } break; } bremfree(bp); *************** *** 523,535 **** brelse(bp); } } - splx(s); - s = splbio(); while (vp->v_numoutput > 0) { vp->v_flag |= VBWAIT; tsleep(&vp->v_numoutput, PVM, "vnvlbv", 0); } splx(s); /* --- 524,535 ---- brelse(bp); } } while (vp->v_numoutput > 0) { vp->v_flag |= VBWAIT; tsleep(&vp->v_numoutput, PVM, "vnvlbv", 0); } + splx(s); /* -DG David Greenman Core-team/Principal Architect, The FreeBSD Project