Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 1 Apr 2000 10:11:59 +0930
From:      Greg Lehey <grog@lemis.com>
To:        Matthew Dillon <dillon@apollo.backplane.com>
Cc:        Soren Schmidt <sos@freebsd.dk>, vallo@matti.ee, freebsd-current@FreeBSD.ORG
Subject:   Re: Deadlock with vinum raid5
Message-ID:  <20000401101159.E51727@freebie.lemis.com>
In-Reply-To: <200004010037.QAA35356@apollo.backplane.com>
References:  <20000331212544.A59295@myhakas.matti.ee> <200003311932.VAA70873@freebsd.dk> <20000401091140.A51727@freebie.lemis.com> <200004010037.QAA35356@apollo.backplane.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Friday, 31 March 2000 at 16:37:44 -0800, Matthew Dillon wrote:
>
>> I'm not sure that this is the same problem.  Please supply the
>> information I ask for in http://www.lemis.com/vinum/how-to-debug.html.
>> 
>> The problem that Søren and I are looking at is usually a panic.  We
>> don't really know where it's happening, but we're each sure it's not
>> in *our* code :-) From a Vinum standpoint, it happens between the time
>> that Vinum sends a request to the driver and when the I/O completes,
>> so it's difficult to blame Vinum.  On the other hand, we've seen it
>> with SCSI as well, so it's difficult to blame the driver.  I'm half
>> guessing that it's something else altogether which is spamming freed
>> data.  Vinum mallocs the buffer headers rather than using geteblk(),
>> which could explain why it happens only with Vinum.
>
>     The business about vinum malloc()ing the buffer header has
>     always bothered me, maybe we should introduce an 'allocpbuf'
>     call (and 'freepbuf') to complement the getpbuf()/relpbuf()
>     routines we already have to take this out of the hands of the
>     device driver.

Seems good to me.  I thought of a few alternatives as well.  But if
this is a problem with some other process nuking data which has since
been freed, this will just drive the problem into hiding.

The most obvious alternative would be for Vinum to use geteblk() after
all and use b_caller1 to point to the rest of the information; but it
would still need to be malloced.

Greg
--
Finger grog@lemis.com for PGP public key
See complete headers for address and phone numbers


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000401101159.E51727>