Messages in this thread |  | | Date | Tue, 22 Oct 1996 09:40:13 -0700 | From | "Leonard N. Zubkoff" <> | Subject | Re: Problems with Adaptec 2940 as a module |
| |
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
|  |