[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Kernel-config: SCSI-LUNS, USB-CardReader



Hallo, Liste,

das hier ist nicht wirklich ein Problem, es geht mir ums Verständnis.

An meinem Rechner hängt ein USB 2.0 Card Reader. Beim Booten werden ja 
USB-Speicher auf ein SCSI-Device gemapt. Das funktioniert auch soweit gut, 
nur fehlen 3 von 4 Einträgen.

Wenn ich mittels "scsi add-single-device 0 0 0 [123]" diese erzeuge, habe 
ich auch auf alles Zugriff. Nun kann der Kernel von sich aus die LUNs alle 
abfragen. Dazu sollte ich einfach "max_scsi_luns=X" entweder als 
Bootparameter oder als Option in modules.conf angeben. Das habe ich 
probiert und es blieb dabei: nur LUN 00.
Bei mir ist sg fest im Kernel und ich denke, darin landet auch die 
Scan-Funktion. Sollte das anders sein, laß ich mich gerne aufklären.

In meinem Kernel config ist die Variable CONFIG_SCSI_MULTI_LUNS nicht 
gesetzt. Dadurch wird in "scsi_scan.c" die Variable "max_scsi_luns" auf 1 
gesetzt. Sonst wären es 512. (So um Zeile 83).

Irgendwann später, so um Zeile 1000+, wird die 
Funktion "scsi_sequential_lun_scan" aufgerufen. Darin befindet sich 
folgende Zeile:
max_dev_lun = min(max_scsi_luns, shost->max_lun);

Ich interpretiere diese Zeile so, daß er von den beiden Variablen die 
kleinere auswählt. Die erste wird ja weiter oben schon festgelegt und die 
zweite ist vermutlich der Bootparameter für den Kernel.
Daß heißt, egal was ich als obere Grenze im Bootparameter angebe, er sucht 
immer nur nach LUN 01.

Ich müßte also, um das Scannen nach logischen Einheiten nutzen zu können, 
den Kernel mit gesetztem config-Paramter neu übersetzen und kann dann über 
den Bootparameter die Anzahl der Einheiten begrenzen.

Habe ich das so richtig verstanden? Ist das Absicht? (Ich weiß, daß sich 
manche SCSI-Controller merkwürdig verhalten, wenn man sie nach mehr als 
einer logischen Einheit fragt, aber wenn ich doch den Bootparamter setze, 
weiß ich doch, was ich tue.)

Grüße,
Reiner.



Reply to: