Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Aug 2002 15:35:48 +0930
From:      Greg 'groggy' Lehey <grog@FreeBSD.org>
To:        Doug Swarin <doug@staff.texas.net>
Cc:        Peter Edwards <pmedwards@eircom.net>, gallatin@cs.duke.edu, hackers@FreeBSD.ORG
Subject:   Re: Vinum crash
Message-ID:  <20020828060548.GA16973@wantadilla.lemis.com>
In-Reply-To: <20020823155817.A82817@staff.texas.net>
References:  <20020823202017.0E2C043E3B@mx1.FreeBSD.org> <20020823155817.A82817@staff.texas.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, 23 August 2002 at 15:58:17 -0500, Doug Swarin wrote:
> On Fri, Aug 23, 2002 at 09:20:02PM +0100, Peter Edwards wrote:
>> "Peter Edwards" <pmedwards@eircom.net> 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...
>
> 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.

I checked in the first patch a couple of hours ago.  It seems that it
only affected ATA drives, which is why I wasn't able to reproduce it.

The second patch is less obvious.  It doesn't take into account that
RAID plexes are also striped.  I'll discuss this with you in private
mail.

Greg
--
See complete headers for address and phone numbers

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?20020828060548.GA16973>