I have a Diamond Fireport 40 card and a parallel port ZIP.
I compiled the BSD NCR driver into the kernel and the PPA
driver into module. Now I cannot autoload the PPA.
The same happens also when I compile the SCSI mid level driver
and the SCSI Disk driver statically and the PPA driver
The kernel version is 2.1.106 but as I see the sources of
2.0.3x the problem is there as well.
I came up with an idea that could solve this problem.
The low level SCSI drivers should be split into two
parts: one that registers the card at compile time
into a table and the actual SCSI driver can be loaded
on demand. Now only one SCSI driver can be autoloaded.
(The one aliased as scsi_hostadapter in /etc/conf.modules)
I tried the devfs patch on Linux 2.1.106 and its location
based device tree (/dev/s[dgrt]/cCbBtTpP) fits well here.
BTW devfs still has problems. I tried the following:
0. I switched on my ZIP and put a disk in it.
1. insmod ppa
2. ls /dev/sd (c0b0t6* appeared)
3. mount/umount, mtools works with this device name
4. rmmod ppa
5. the entries in /dev/sd does not disappear
6. mount/mtools don't work (no autoload!)
7. insmod ppa
8. remove disk form ZIP
9. mdir: the kernel says no disk, and the c0b0t6p4 disappears,
(partition 4, an ordinary DOS ZIP disk)
the disk which represents the whole disk stays.
10. insert disk
11. the particular partition entries does not reappear until
I do a 'dd if=/dev/sd/c0b0t6 of=/dev/null'
So as I see, devfs would be very good at dealing with multiple
SCSI controllers but the SCSI driver architecture in Linux
(as it is now) cannot properly deal with them.