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: