*BSD News Article 58465


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!nntp.coast.net!news.sprintlink.net!news.clark.net!rahul.net!a2i!dandelion.com!not-for-mail
From: "Leonard N. Zubkoff" <lnz@dandelion.com>
Newsgroups: comp.unix.bsd.freebsd.misc,comp.periphs.scsi
Subject: Re: SCSI-2 Bus Hangs
Date: 29 Dec 1995 00:58:59 -0800
Organization: Dandelion Digital
Lines: 28
Sender: lnz@dandelion.com
Message-ID: <4c0akj$gi3@kelewan.dandelion.com>
References: <4bju5p$ihj@wilma.widomaker.com> <4bp3bp$7cc@scratchy.mosquito.com> <1995Dec26.123518.1@spcvxb.spc.edu> <4brb07$b4q@uriah.heep.sax.de> <4bsu5j$eca@kelewan.dandelion.com> <4btpuu$555@uriah.heep.sax.de>
NNTP-Posting-Host: dandelion.com
NNTP-Posting-User: root
In-reply-to: j@uriah.heep.sax.de's message of 28 Dec 1995 10:02:06 GMT
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.freebsd.misc:11719 comp.periphs.scsi:44064

In article <4btpuu$555@uriah.heep.sax.de> j@uriah.heep.sax.de (J Wunsch) writes:

  "Leonard N. Zubkoff" <lnz@dandelion.com> writes:

  >   FreeBSD drivers do this already since day 1.

  > Would you kindly point me to the code where the Bus Device Reset or SCSI
  > Bus Reset is initiated in FreeBSD?

  Sorry, i should have looked before.  Actually, the timeout code is
  there, but not all adapter drivers do bus resets.  I've seen it myself
  for the NCR driver.  For the Adaptec 154X driver, this is the event
  chain that finally causes a timeout:

Ahhh, I understand now.  In the FreeBSD drivers everything is keyed off the
timeout routine, and the driver is expected to abort the command the first
time through, and graduate to a Bus Device Reset or SCSI Bus Reset as
necessary.  The BusLogic driver in bt.c doesn't implement any error
recovery other than aborting a command, which is why I didn't find this.
Perusing aic7xxx.c I see how this is handled.  Thanks for the pointer.

For reference, in Linux the driver provides two separate routines, one to
handle aborting a command and the other to handle resets.  In each case,
the driver tells the mid level code what it actually did and the mid level
code then takes appropriate action.  If an abort also times out, then the
reset code is invoked.

		Leonard