Bottom half handler, abort/reset code

Doug Ledford dledford at dialnet.net
Fri Aug 15 19:40:19 PDT 1997


OK...the bottom half handler is working once again (it died after I
applied a patch to fix the "Couldn't get a free page...." messages because
the bottom half handler was started by the scheduler and this patch can
cause extremely long periods of time without the scheduler running that
also just happens to be waiting on the bottom half handler, kinda the
chicken and egg thing, so the handler got switched over to running on the
timer interrupt when needed).  The abort code appears to be finished now
(and I must say, I'm quite happy with the new abort code, it's very fast
at getting rid of scbs that need aborted, and wastes very little time
escalating things if the bus happens to be hung).  The reset code is about
3/4 of the way finished.  I'm happy with the aic7xxx_reset() function in
general, with aic7xxx_bus_device_reset(), aic7xxx_reset_channel().  I'm
not yet done with aic7xxx_handle_bus_dev_reset() [I think that's the name
of the function called by the scsiint handler anyway] and I'm not yet
happy with aic7xxx_reset_device().  As a matter of fact, for the abort
functions, I wrote a new aic7xxx_abort_device() function since the
reset_device funtion wasn't really suited all that well for the actuality
of a MSG_ABORT or MSG_ABORT_TAG, which is all these functions need to
handle.

So, having said that, I have made a patch that applies cleanly to
linux-2.0.31-pre6 and placed it on my ftp server (ftp.dialnet.net) in
/pub/linux/aic7xxx.  I'm also placing the buffer patch I mention there for
people to grab as well.  The patch is a normal patch, and applies
normally, eg:
cd /usr/src/linux
patch -p1 < /where/ever/you/put/the/patch

In any case, this is a work in progress, so if there are multiple copies
of the patch by the time you look, then please grab the latest one, as I
likely will have fixed problems that still existed in older patches.

One more thing, I have modified the QUEUE_FULL handling somewhat.  It will
reset the bus if you get too many of these on the same command.  I did
this since it's an easy way to test the reset code, pump up the commands
per lun too high for a drive, then slam it with requests.

Now, having done all that, and got this initial version out today like I
said I would, I'm going to go away from the computer for a while :)

*****************************************************************************
* Doug Ledford                      *   Unix, Novell, Dos, Windows 3.x,     *
* dledford at dialnet.net    873-DIAL  *     WfW, Windows 95 & NT Technician   *
*   PPP access $14.95/month         *****************************************
*   Springfield, MO and surrounding * Usenet news, e-mail and shell account.*
*   communities.  Sign-up online at * Web page creation and hosting, other  *
*   873-9000 V.34                   * services available, call for info.    *
*****************************************************************************




More information about the aic7xxx mailing list