Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 03 Jun 1998 16:30:50 -0700
From:      Mike Smith <mike@smith.net.au>
To:        Greg Lehey <grog@lemis.com>
Cc:        Mike Smith <mike@smith.net.au>, Bob Willcox <bob@luke.pmr.com>, shimon@simon-shapiro.org, Karl Pielorz <kpielorz@tdx.co.uk>, tcobb <tcobb@staff.circle.net>, "freebsd-current@freebsd.org" <freebsd-current@FreeBSD.ORG>, Michael Hancock <michaelh@cet.co.jp>
Subject:   Re: DPT driver fails and panics with Degraded Array 
Message-ID:  <199806032330.QAA02030@dingo.cdrom.com>
In-Reply-To: Your message of "Thu, 04 Jun 1998 09:57:17 %2B0930." <19980604095717.A22406@freebie.lemis.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> >>> Why would a driver call biodone on a buffer that doens't belong to it?
> >>
> >> Probably not relavent, but in the DPT device driver that I wrote for AIX
> >> I had to put some pretty ugly validity checks in the interrupt code to
> >> prevent my driver from trying to do an iodone (AIX's version of biodone)
> >> on already completed (or purged, I don't remember for sure...its been
> >> over a year now) commands.  Seems that the DPT firmware would (on
> >> occasion) interrupt with a status packet that pointed to a ccb that my
> >> driver had already completed.  As I recall this would only happen under
> >> heavy load and it was pretty intermittant.  As far as I know, it was
> >> never actually fixed.
> >
> > Actually, this is *extremely* relevant, if the firmware is still doing
> > it and the DPT driver isn't aware of this.
> 
> This would normally cause a 'biodone: buffer already done' message,
> which is a warning, not a panic.  The only way I could think of this
> happening on a valid buffer (apart from the obvious of calling it
> while it wasn't busy) would be if something messed around with other
> buffer flags.

It would be an issue if the buf struct had been recycled, but hadn't 
yet been marked busy, or if the buf pointer was invalid (the business 
check is the very first check in biodone()).


-- 
\\  Sometimes you're ahead,       \\  Mike Smith
\\  sometimes you're behind.      \\  mike@smith.net.au
\\  The race is long, and in the  \\  msmith@freebsd.org
\\  end it's only with yourself.  \\  msmith@cdrom.com



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?199806032330.QAA02030>