11. Affectation des numéros de mineur

Contenu de cette section

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 controleurs SCSI, de scsi0 jusqu'a scsiN
        Pour tous les identificateurs SCSI sur le bus, de 0 a 7, sauf pour
        l'identificateur du controleur courant
                Pour toutes les unites logiques, de 0 a max_scsi_luns
                - test de la combinaison <bus, cible, unite logique> en
                  envoyant une commande TEST UNIT READY. Si une unite logique
                  est supposee absente, ne plus continuer les tests pour le
                  couple <bus, cible>.
                - emission d'une commande INQUIRY pour determiner ce qui
                  a ete trouve (type du peripherique, vendeur, modele,
                  version du firmware, etc.).
                - renvoi du resultat de cette reconnaissance a une fonction
                  speciale d'identification propre a chaque pilote de haut
                  niveau present (par exemple le pilote de disques, de
                  lecteur de bandes, etc.). Attachement de ce peripherique
                  a la prochaine unite disponible pour chaque pilote qui
                  desire gerer ce peripherique. Le gestionnaire generique
                  va tous les attacher.
                - s'il s'agissait d'un peripherique SCSI-I ou qui fait
                  partie d'une liste de peripheriques connus comme ne
                  gerant pas plusieurs unites logiques, stopper les tests
                  pour le couple <bus, cible>.
                - s'il s'agissait d'un peripherique connu comme pouvant
                  gerer plusieurs unites logiques, une scrutation de toutes
                  les unites logiques potentielles est commencee, 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.


Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre