From owner-freebsd-hackers Fri Aug 23 13:58:23 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9360E37B401 for ; Fri, 23 Aug 2002 13:58:19 -0700 (PDT) Received: from mw2.texas.net (mw2.texas.net [206.127.30.12]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0BCC543E81 for ; Fri, 23 Aug 2002 13:58:19 -0700 (PDT) (envelope-from doug@staff3.texas.net) Received: from staff3.texas.net (staff3.texas.net [207.207.0.40]) by mw2.texas.net (8.11.6/8.11.6) with ESMTP id g7NKwI500458; Fri, 23 Aug 2002 15:58:18 -0500 (CDT) Received: (from doug@localhost) by staff3.texas.net (8.11.6/8.11.6) id g7NKwHn82873; Fri, 23 Aug 2002 15:58:17 -0500 (CDT) (envelope-from doug) Date: Fri, 23 Aug 2002 15:58:17 -0500 From: Doug Swarin To: Peter Edwards Cc: gallatin@cs.duke.edu, hackers@FreeBSD.ORG Subject: Re: Vinum crash Message-ID: <20020823155817.A82817@staff.texas.net> References: <20020823202017.0E2C043E3B@mx1.FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <20020823202017.0E2C043E3B@mx1.FreeBSD.org>; from pmedwards@eircom.net on Fri, Aug 23, 2002 at 09:20:02PM +0100 Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On Fri, Aug 23, 2002 at 09:20:02PM +0100, Peter Edwards wrote: > "Peter Edwards" wrote: > Urgh. Forget it, I was seeing references to rq that weren't there. > > > Hi, > > > > Ok, I'm up to my neck in code I've never seen and making wild > > guesses, but: > > > > In vinumrequest.c:launch_requests(), isn't it possible that the > > final BUF_STRATEGY() from line 431 completes before we get back to the top of the outer "for" loop and that complete_rqe gets called for the > > last buffer (we don't have splbio()), bringing the refcount of the > > entire request down to zero, then freeing the request. You then get to the top of the loop, and rq will have been freed, but you looking at its contents. Ok, maybe not likely but... > > > > I suppose you could just hold one more reference to the request while doing launch_requests() and check after all theB UF_STRATEGYs are done when you decrement the active count and find it's zero, then do the "request-finished" processing as done by complete_rqe > > > > Just a thought... > > -- > > Peter Edwards. I've already got a patch for this; it's in PR kern/41740, along with another that allows you to safely hot-revive a striped plex. Doug Swarin doug@texas.net To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message