Page suivante Page précédenteTable des matières

11. Affectation des numéros de mineur

Suite à l'utilisation par Linux du type dev_t sur 16 bits, 8 bits étant réservés pour le mineur, les disques SCSI, les lecteurs de bandes ou de CDROM et les fichiers spéciaux génériques ont des mineurs attribués dynamiquement, suivant l'algorithme suivant :

Pour tous les contrôleurs SCSI, de scsi0 jusqu'à scsiN
 Pour tous les identificateurs SCSI sur le bus, de 0 à 7, sauf pour
 l'identificateur du contrôleur courant
 Pour toutes les unités logiques, de 0 à max_scsi_luns
 - test de la combinaison <bus, cible, unité logique> en
 envoyant une commande TEST UNIT READY. Si une unité logique
 est supposée absente, ne plus continuer les tests pour le
 couple <bus, cible>.
 - émission d'une commande INQUIRY pour déterminer ce qui
 a été trouvé (type du périphérique, vendeur, modèle,
 version du firmware, etc.).
 - renvoi du résultat de cette reconnaissance à une fonction
 spéciale d'identification propre à chaque pilote de haut
 niveau présent (par exemple le pilote de disques, de
 lecteur de bandes, etc.). Attachement de ce périphérique
 à la prochaine unité disponible pour chaque pilote qui
 désire gérer ce périphérique. Le gestionnaire générique
 va tous les attacher.
 - s'il s'agissait d'un périphérique SCSI-I ou qui fait
 partie d'une liste de périphériques connus comme ne
 gérant pas plusieurs unités logiques, stopper les tests
 pour le couple <bus, cible>.
 - s'il s'agissait d'un périphérique connu comme pouvant
 gérer plusieurs unités logiques, une scrutation de toutes
 les unités logiques potentielles est commencée, surchargeant
 la valeur max_scsi_luns.

Il y a souvent des problèmes avec ce genre d'approche, car si votre système possède des périphériques qui ne sont pas branchés en permanence, les mineurs vont dépendre des périphériques présents au moment du boot. Cela peut être gênant, car les scripts de démarrage ou le fichier /etc/fstab peuvent contenir des instructions pour monter des partitions spécifiques. Ces commandes peuvent échouer si le disque a un mineur différent d'une fois sur l'autre.

Ce problème n'a pas été complètement résolu. Un programme qu'on peut trouver sur tsx-11 crée une arborescence /dev/scsi basée sur le numéro d'hôte, l'identificateur et le numéro d'unité logique. Ce n'est pas particulièrement propre, mais cela permet d'éviter pas mal d'ennuis.

Une meilleure solution passera sans doute par le pseudo répertoire /proc/scsi. Nous y travaillons actuellement, aussi pour l'instant ne pouvons-nous pas dire quelle sera sa forme définitive. A l'heure où j'écris ces lignes, cette approche semble prometteuse pour résoudre certains de ces points.


Page suivante Page précédenteTable des matières