Page suivante Page précédente Table 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édente Table des matières