From owner-freebsd-hackers Tue Mar 4 15:20:43 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id PAA22835 for hackers-outgoing; Tue, 4 Mar 1997 15:20:43 -0800 (PST) Received: from dg-rtp.dg.com (dg-rtp.rtp.dg.com [128.222.1.2]) by freefall.freebsd.org (8.8.5/8.8.5) with SMTP id PAA22825 for ; Tue, 4 Mar 1997 15:20:39 -0800 (PST) Received: by dg-rtp.dg.com (5.4R3.10/dg-rtp-v02) id AA26667; Tue, 4 Mar 1997 18:20:03 -0500 Received: from ponds by dg-rtp.dg.com.rtp.dg.com; Tue, 4 Mar 1997 18:20 EST Received: from lakes.water.net (lakes [10.0.0.3]) by ponds.water.net (8.8.3/8.7.3) with ESMTP id RAA29762; Tue, 4 Mar 1997 17:08:10 -0500 (EST) Received: (from rivers@localhost) by lakes.water.net (8.8.3/8.6.9) id RAA26782; Tue, 4 Mar 1997 17:13:49 -0500 (EST) Date: Tue, 4 Mar 1997 17:13:49 -0500 (EST) From: Thomas David Rivers Message-Id: <199703042213.RAA26782@lakes.water.net> To: ponds!root.com!dg, ponds!freefall.cdrom.com!freebsd-hackers, ponds!eclogite.eps.nagoya-u.ac.jp!kato, ponds!lambert.org!terry Subject: "dup alloc" and Re: kern/2875: vinvalbuf() clobbers b_vnbufs chain Content-Type: text Sender: owner-hackers@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > > > > >Description: > > > The function vinvalbuf() in vfs_subr.c may clober b_vnbufs chain. > > in vinvalbuf(): > > s = splbio(); > for (;;) { > ... > for (bp = blist; bp; bp = nbp) { > ... > if (bp->b_flags & B_BUSY) { > ... > splx(s); <--- (1) > ... > break; <--- (2) > } > } > } > > Because disk I/O interruption is unmasked at (1), b_vnbufs is operated > without splbio() after `break' at (2). > This looks very interesting to me... does anything think it could be the cause of my "dup alloc" problems? I'm going to give it a try later this evening... - Dave Rivers -