Re: Problems with Adaptec 2940 as a module

Leonard N. Zubkoff (lnz@dandelion.com)
Tue, 22 Oct 1996 09:40:13 -0700


Date: Tue, 22 Oct 1996 03:49:08 -0700 (PDT)
From: Michael Neuffer <neuffer@nomis.i-connect.net>

When Leonard and I were working on easing the tight skin
syndrome of the SCSI subsystem, Leonard wrote the code to handle
individual queues for every device.

For this we created a new callback function called select_queue_depths().
Unfortunately he forgot about the fact that scsi lowlevel drivers also
need to get this function called when beeing loaded as modules, otherwise
the device queues never get set up.

So every driver which supported select_queue_depths() was domed to fail as
a module.

eata_dma.c, ncr53c8xx.c, aic7xxx.c, advansys.c, BusLogic.c

That's interesting... someone had already posted this same fix on USENET last
Friday due to problems with eata_dma as a driver, and I sent it on to Linus on
Saturday. I didn't realize the problem being discussed here was the same one,
as this bug should not be affecting the aic7xxx driver.

The queue_depth changes default to still using the cmd_per_lun field if
select_queue_depths wasn't called. This explains why the bug would not show up
on either BusLogic or aic7xxx since they both leave non-zero values in
cmd_per_lun, whereas the eata_dma, ncr53c8xx, and advansys leave it set to
zero.

Leonard