Pilote de périphérique d'adaptateur SCSI parallèle
Objectif
Prend en charge la carte SCSI.
Syntaxe
<#include /usr/include/sys/scsi.h>
<#include /usr/include/sys/devinfo.h>Descriptif
Les fichiers spéciaux /dev/scsin et /dev/vscsin fournissent des interfaces permettant aux pilotes d'unité SCSI d'accéder aux unités SCSI. Ces fichiers gèrent les ressources de l'adaptateur de sorte que plusieurs pilotes de périphérique SCSI puissent accéder simultanément aux unités sur la même carte SCSI. Le fichier spécial /dev/vscsin fournit l'interface pour SCSI-2 Fast / Wide Adapter/A et SCSI-2 Differential Fast / Wide Adapter/A, tandis que le fichier spécial /dev/scsin fournit l'interface pour les autres adaptateurs SCSI. Les adaptateurs SCSI sont accessibles via les fichiers spéciaux /dev/scsi0, /dev/scsi1, .... et /dev/vscsi0, /dev/vscsi1, ....
Les fichiers spéciaux /dev/scsin et /dev/vscsin fournissent des interfaces pour l'accès aux instances d'unité en mode initiateur et cible. L'adaptateur hôte est un initiateur pour l'accès aux périphériques tels que les disques, les bandes et les CD-ROM. L'adaptateur est une cible lorsqu'il est accessible à partir d'unités telles que des systèmes informatiques ou d'autres périphériques pouvant agir en tant qu'initiateurs SCSI.
Sous-routines dépendantes de l'unité
Le pilote de périphérique de l'adaptateur SCSI ne prend en charge que les sous-routines Ouvert, Fermeret Ioctl . Les sous-routines Lire et écrire ne sont pas prises en charge.
Sous-routines ouvertes et proches
La sous-routine Openx fournit une fonction de diagnostic d'adaptateur. La sous-routine Openx fournit un paramètre Ext . Ce paramètre sélectionne le mode de l'adaptateur et accepte la valeur SC_DIAGNOSTIC . Cette valeur est définie dans le fichier /usr/include/sys/scsi.h et place l'adaptateur en mode diagnostic.
En mode diagnostic, seules les opérations de sous-routine Fermer et ioctl sont acceptées. Tous les autres sous-programmes valides de l'adaptateur renvoient une valeur de-1 et réglez le numéro d'erreur variable globale à une valeur de ACCÈS . En mode diagnostic, le pilote de périphérique de l'adaptateur SCSI peut accepter les demandes suivantes:
- Exécutez différents tests de diagnostic d'adaptateur.
- Téléchargement du microcode de l'adaptateur.
Le sous-programme Openx requiert les droits appropriés pour l'exécution. Tenter d'exécuter ce sous-programme sans l'autorité appropriée amène le sous-programme à renvoyer une valeur de-1 , et définissez le numéro d'erreur valeur de variable globale à EPERME . Tenter d'ouvrir un appareil déjà ouvert pour un fonctionnement normal, ou lorsqu'un autre ouvrirx le sous-programme est en cours, amène le sous-programme à renvoyer une valeur de-1 , et définissez le numéro d'erreur variable globale à une valeur de ACCÈS .
Tout processus de noyau peut ouvrir le pilote de périphérique de l'adaptateur SCSI en mode Normal. Pour le mode Normal, le paramètre Ext est défini sur 0. Toutefois, un processus non-noyau doit avoir au moins le droit Dev_config d'ouvrir le pilote de périphérique de l'adaptateur SCSI en mode Normal. Tentative d'exécution d'une opération normale ouvrir Un sous-programme sans l'autorité appropriée amène le sous-programme à renvoyer une valeur de-1 , et définissez le numéro d'erreur variable globale à une valeur de EPERM .
Sous-routine ioctl
Outre l'opération INFOS , le pilote de périphérique SCSI définit des opérations spécifiques pour les unités en mode non diagnostic et diagnostic.
L'opération INFOS est définie pour tous les pilotes de périphérique qui utilisent le sous-programme Ioctl , comme suit:
- L'opération renvoie une structure Devinfo . Cette structure est définie dans le fichier /usr/include/sys/devinfo.h . Le type d'unité dans cette structure est DD_BUSet le sous-type est DS_SCSI. :NONE.flagsN'est pas utilisé et est défini sur 0. Le mode de diagnostic n'est pas requis pour cette opération.
- La structure Devinfo inclut des données uniques telles que l'ID SCSI de la carte et la taille maximale du transfert de données en mode initiateur autorisée (en octets). Un pilote de périphérique SCSI appelant utilise ces informations pour connaître la taille de transfert maximale autorisée pour un périphérique qu'il contrôle sur la carte SCSI. De cette façon, le pilote de périphérique SCSI peut contrôler les unités sur plusieurs cartes SCSI, chaque unité ayant éventuellement une taille de transfert de mode d'initiateur maximale différente.
Opérations ioctl SCSI pour les adaptateurs en mode non diagnostique
Les opérations non diagnostiques sont des fonctions de pilote de périphérique d'adaptateur SCSI, plutôt que des fonctions de pilote de périphérique général. Les opérations ioctl de pilote de périphérique d'adaptateur SCSI requièrent que le pilote de périphérique de l'adaptateur ne soit pas en mode diagnostic. Si ces opérations sont tentées alors que l'adaptateur est en mode diagnostic, une valeur de-1 est retourné et le numéro d'erreur la variable globale est définie sur une valeur de ACCÈS .
Les opérations SCSI suivantes sont destinées aux adaptateurs en mode non diagnostic:
| Opération | Descriptif |
|---|---|
| SCIODNLD | Fournit les moyens de télécharger le microcode vers l'adaptateur. Le pilote de périphérique IBM SCSI-2 Fast/Wide Adapter/A ne prend pas en charge cette opération. Le téléchargement du microcode pour l'adaptateur Fast / Wide est pris en charge uniquement dans le module de diagnostic autonome. |
| SCIOEVENT | Enregistre l'instance d'unité SCSI sélectionnée pour recevoir la notification d'événements asynchrones. |
| SCIOGTHW | Permet à l'appelant de vérifier la prise en charge du pilote de périphérique de l'adaptateur SCSI pour les écritures rassemblée. |
| SCIOHALT | Annule la commande en cours (s'il y en a un), efface la file d'attente des commandes en attente et place la file d'attente d'unités à l'état arrêté pour un périphérique particulier. |
| SCIOINQU | Fournit les moyens d'exécuter une commande inquire sur une unité SCSI. |
| SCIOREAD | Envoie une commande de lecture de bloc unique à l'unité SCSI sélectionnée. |
| SCIORESET | Permet à l'appelant de forcer une unité SCSI à libérer toutes les réservations en cours, effacer toutes les commandes en cours et revenir à un état initial. |
| SCIOSTART | Ouvre un chemin logique vers un périphérique cible SCSI. L'adaptateur SCSI hôte agit comme un initiateur. |
| SCIOSTARTTGT | Ouvre un chemin logique vers une unité d'initiateur SCSI. L'adaptateur SCSI hôte agit comme cible. |
| SCIOSTOP | Ferme le chemin logique vers une unité cible SCSI, où la carte SCSI agit comme un initiateur. |
| SCIOSTOPTGT | Ferme le chemin logique vers une unité d'initialisation SCSI, où la carte SCSI hôte agit comme cible. |
| SCIOSTUNITAIRE | Fournit les moyens d'émettre une commande d'unité de démarrage SCSI sur une unité SCSI sélectionnée. |
| SCIOTUR | Envoie une commande Test Unit Ready à l'unité SCSI sélectionnée. |
Opérations ioctl SCSI pour les adaptateurs en mode diagnostic
Les opérations suivantes pour le sous-programme Ioctl sont autorisées uniquement lorsque l'adaptateur a été ouvert en mode diagnostic. Si ces commandes sont tentées pour un adaptateur qui n'est pas en mode Diagnostic, une valeur de-1 est retourné et le numéro d'erreur la variable globale est définie sur une valeur de ACCÈS .
| Opération | Descriptif |
|---|---|
| SCIODIAG | Permet d'émettre des commandes de diagnostic d'adaptateur. |
| SCIODNLD | Fournit les moyens de télécharger le microcode vers l'adaptateur. |
| SCIOTRAM | Fournit les moyens d'émettre différentes commandes d'adaptateur pour tester l'interface DMA de la carte et la mémoire RAM de mémoire tampon. |
Pour permettre l'exécution de ces opérations sur plusieurs interfaces de carte d'adaptateur SCSI, une valeur de retour spéciale est définie. Une valeur de retour de-1 avec un numéro d'erreur valeur de ENXIO indique que la demande ioctl Le sous-programme ne s'applique pas à la carte adaptateur actuelle. Cette valeur de retour ne doit pas être considérée comme une erreur pour les commandes nécessitant un mode de diagnostic pour l'exécution.
Récapitulatif des conditions d'erreur SCSI
Les valeurs Errno possibles pour le pilote de périphérique de l'adaptateur sont les suivantes:
| Valeur | Descriptif |
|---|---|
| EACCES | Indique qu'une sous-routine Openx a été tenta alors que l'adaptateur avait un ou plusieurs périphériques en cours d'utilisation. |
| EACCES | Indique qu'une sous-routine autre que Ioctl ou Fermer a été tenta alors que l'adaptateur était en mode diagnostic. |
| EACCES | Indique qu'un appel à la commande SCIODIAG a été tenté alors que l'adaptateur n'était pas en mode diagnostic. |
| EBUSY | Indique qu'une opération de suppression a échoué. L'adaptateur est toujours ouvert. |
| EDÉFAUT | Indique que l'adaptateur enregistre une erreur de diagnostic en réponse à la commande SCIODIAG . L'option de reprise SCIODIAG doit être émise pour continuer le traitement. |
| EDÉFAUT | Indique qu'une erreur d'E-S grave s'est produite au cours d'une commande SCIODNLD . Discontinuer les opérations sur cette carte. |
| EDÉFAUT | Indique qu'une copie entre le noyau et l'espace utilisateur a échoué. |
| EINVAL | Indique un paramètre non valide ou que l'unité n'a pas été ouverte. |
| EIO | Indique une commande non valide. Une opération SCIOSTART doit être exécutée avant cette commande, ou une combinaison ID SCSI et LUN non valide doit être transmise. |
| EIO | Indique que la commande a échoué en raison d'une erreur détectée sur l'adaptateur ou le bus SCSI. |
| EIO | Indique que le pilote de périphérique n'a pas pu broder le code. |
| EIO | Indique qu'un service de noyau a échoué ou qu'une erreur d'E-S irrémédiable s'est produite. |
| ENOCONNECT | Indique qu'une erreur de bus SCSI s'est produite. |
| ENODEV | Indique que l'unité cible ne peut pas être sélectionnée ou ne répond pas. |
| ENOMEM | Indique que la commande n'a pas pu être exécutée en raison d'une quantité insuffisante de mémoire. |
| ENXIO | Indique que l'ioctl demandé n'est pas pris en charge par cet adaptateur. |
| EPERM | Indique que l'appelant n'a pas l'autorité requise. |
| ETIMEDOUT | Indique qu'une commande SCSI ou une commande d'adaptateur a dépassé la valeur de dépassement de délai. |
Fiabilité et facilité d'accès à l'information
Les erreurs détectées par le pilote de périphérique de l'adaptateur peuvent être l'une des suivantes:
- Erreurs matérielles de l'adaptateur permanent ou du système
- Erreurs matérielles de l'adaptateur temporaire ou du système
- Erreurs de microcode d'adaptateur inconnues permanentes
- Erreurs temporaires de microcode d'adaptateur inconnues
- Erreurs de pilote de périphérique d'adaptateur inconnu permanent
- Erreurs de pilote de périphérique d'adaptateur inconnu temporaire
- Erreurs système permanentes inconnues
- Erreurs système temporaires inconnues
- Erreurs de bus SCSI temporaires
Les erreurs permanentes sont soit des erreurs qui ne peuvent être réessayées, soit des erreurs qui ne sont pas rétablies avant qu'un nombre prescrit de nouvelles tentatives ait été épuisé. Les erreurs temporaires sont des erreurs non-atastrophiques qui ne peuvent pas être réessayées ou des erreurs de récupération qui ont été récupéréées avant qu'un nombre prescrit de nouvelles tentatives n'ait été épuisée.
Erreur-Enregistrement des valeurs pour les erreurs matérielles permanentes
Le modèle d'enregistrement d'erreur pour les erreurs matérielles permanentes détectées par le pilote de périphérique de l'adaptateur SCSI est décrit ci-dessous. Reportez-vous à la structure Code retour pour la définition des données de détail. La structure rc est définie dans le fichier /usr/include/sys/scsi.h :
| Zone | Descriptif |
|---|---|
| Comment | Erreur matérielle de la carte SCSI permanente. |
| Class | H, indiquant une erreur matérielle. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | PERM, indiquant un échec permanent. |
| Err_Desc | 0x1010, indiquant une erreur d'adaptateur. |
| Prob_Causes | Les éléments suivants:
|
| Fail_Causes | Les éléments suivants:
|
| Fail_Actions | Les éléments suivants:
|
| Detail_Data1 | 108, 11 et HEX |
Erreur-Valeurs d'enregistrement pour les erreurs matérielles temporaires
Le modèle d'enregistrement d'erreur pour les erreurs matérielles temporaires détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur matérielle de l'adaptateur SCSI temporaire. |
| Class | H, indiquant une erreur matérielle. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | TEMP, indiquant un incident temporaire. |
| Err_Desc | 0x1010, indiquant une erreur d'adaptateur. |
| Prob_Causes | Les éléments suivants:
|
| Fail_Causes | Les éléments suivants:
|
| Fail_Actions | Les éléments suivants:
|
| Detail_Data1 | 108, 11 et HEX |
Erreur-Record Values for Permanent Unknown Adapter Microcode Errors
Le modèle d'enregistrement d'erreur pour les erreurs permanentes de microcode d'adaptateur SCSI inconnues détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur logicielle de l'adaptateur SCSI permanent. |
| Class | H, indiquant une erreur matérielle. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | PERM, indiquant un échec permanent. |
| Err_Desc | 0x6100, indiquant une erreur d'adaptateur. |
| Prob_Causes | 0x3331, indiquant un microcode d'adaptateur. |
| Fail_Causes | 0x3300, indiquant l'adaptateur. |
| Fail_Actions | Les éléments suivants:
|
| Detail_Data1 | 108, 11 et HEX |
Erreur-Enregistrement des valeurs pour les erreurs de microcode d'adaptateur inconnu temporaire
Le modèle d'enregistrement d'erreur pour les erreurs temporaires de microcode d'adaptateur SCSI inconnues détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur logicielle de carte SCSI inconnue temporaire. |
| Class | H. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | TEMP, indiquant un incident temporaire. |
| Err_Desc | Egal à 0x6100, indiquant une erreur de programme de microcode. |
| Prob_Causes | 3331, indiquant le microcode de l'adaptateur. |
| Fail_Causes | 3300, indiquant l'adaptateur. |
| Fail_Actions | Les éléments suivants:
|
| Detail_Data1 | 108, 11 et HEX |
Valeurs des enregistrements d'erreurs pour les erreurs permanentes du pilote de l'adaptateur inconnu
Le modèle d'enregistrement d'erreur pour les erreurs de pilote de périphérique d'adaptateur SCSI inconnu permanent détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur permanente de pilote inconnu. |
| Class | S. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | PERM, indiquant un échec permanent. |
| Err_Desc | 0x2100, indiquant une erreur de programme logiciel. |
| Prob_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Actions | 0x3301, indiquant que si le problème persiste, (0x3000) contactez les représentants de service appropriés. |
| Detail_Data1 | 108, 11 et HEX |
Erreur-Valeurs d'enregistrement pour les erreurs de pilote de périphérique de l'adaptateur inconnu temporaire
Le modèle d'enregistrement d'erreur pour les erreurs de pilote de périphérique d'adaptateur SCSI inconnu détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur temporaire du pilote inconnu. |
| Class | S. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | TEMP, indiquant un incident temporaire. |
| Err_Desc | 0x2100, indiquant une erreur de programme logiciel. |
| Prob_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Actions | 0x3301, indiquant que si le problème persiste, (0x3000) contactez les représentants de service appropriés. |
| Detail_Data1 | 108, 11 et HEX |
Erreur-Valeurs d'enregistrement pour les erreurs système permanentes inconnues
Le modèle d'enregistrement d'erreur pour les erreurs système inconnues permanentes détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur système inconnue permanente. |
| Class | H. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | UNKN, indiquant une erreur inconnue. |
| Err_Desc | 0xFE00, indiquant une erreur non déterminée. |
| Prob_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Actions | 0x0000 et 0x3301, indiquant que des procédures d'identification des incidents doivent être exécutées ; si le problème persiste, (0x3000) contactez les représentants de service appropriés. |
| Detail_Data1 | 108, 11 et HEX |
Erreur-Valeurs d'enregistrement pour les erreurs système inconnues temporaires
Le modèle d'enregistrement d'erreur pour les erreurs système inconnues temporaires détectées par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur système inconnue temporaire. |
| Class | H. |
| Report | TRUE, indiquant que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | TRUE, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | UNKN, indiquant une erreur inconnue. |
| Err_Desc | 0xFE00, indiquant une erreur non déterminée. |
| Prob_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Causes | 0X1000, indiquant un programme logiciel. |
| Fail_Actions | 0x0000 et 0x3301, indiquant que des procédures d'identification des incidents doivent être exécutées ; si le problème persiste, (0x3000) contactez les représentants de service appropriés. |
| Detail_Data1 | 108, 11 et HEX |
Erreur-Valeurs d'enregistrement pour les erreurs de bus SCSI temporaires
Le modèle d'enregistrement d'erreur pour les erreurs de bus SCSI temporaires par le pilote de périphérique de l'adaptateur SCSI suit:
| Zone | Descriptif |
|---|---|
| Comment | Erreur de bus SCSI temporaire. |
| Class | H, indiquant une erreur matérielle. |
| Report | True, indiquant qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | FALSE, indiquant que cette erreur n'est pas alertable. |
| Err_Type | TEMP, indiquant un échec térmporaire. |
| Err_Desc | 0x942, indiquant une erreur de bus SCSI. |
| Prob_Causes | Les éléments suivants:
|
| Fail_Causes | Les éléments suivants:
|
| Fail_Actions | Les éléments suivants:
|
| Detail_Data | 108, 11 et HEX. |
Gestion des clichés
Le pilote de périphérique de la carte SCSI est une cible pour la fonction de vidage système. Les options DUMPINIT et DUMPSTART du point d'entrée Dévidage prennent en charge les appels multiples ou redondants.
L'option REQUÊTE FACTICETTE renvoie une taille de transfert minimale de 0 octets et une taille de transfert maximale égale à la taille de transfert maximale prise en charge par le pilote de périphérique de l'adaptateur SCSI.
Pour être traité, les appels à l'option ECRITPCRIRE du pilote de périphérique de l'adaptateur SCSI doivent utiliser le paramètre Arg comme pointeur vers la structure Sc_buf . A l'aide de cette interface, une commande SCSI écrire peut être exécutée sur un périphérique cible précédemment démarré (ouvert). Le paramètre Uiop est ignoré par le pilote de périphérique de l'adaptateur SCSI. Les commandes fractionnées ou consolidées ne sont pas prises en charge à l'aide de ECRITPCRIRE.
La réussite du point d'entrée Dévidage est indiquée par un 0. En cas d'échec, le point d'entrée renvoie l'un des éléments suivants:
| Valeur | Descriptif |
|---|---|
| EINVAL | Indique que le pilote de périphérique de l'adaptateur a été transmis une demande qui n'était pas valide, telle que la tentative d'une option DUMPSTART avant d'exécuter une option DUMPINIT . |
| EIO | Indique que le pilote de périphérique de l'adaptateur n'a pas pu exécuter la commande en raison d'un manque de ressources requises ou d'une erreur d'E-S. |
| ETIMEDOUT | Indique que l'adaptateur n'a pas répondu au statut avant l'expiration de la valeur d'expiration de la commande transmise. |
Fichiers
| Article | Descriptif |
|---|---|
| /dev/scsi0, /dev/scsi1, ..., /dev/scsi n | Fournissez une interface permettant aux pilotes de périphérique SCSI d'accéder aux cartes ou aux périphériques SCSI. |
| /dev/vscsi0, /dev/vscsi1, ..., /dev/vscsin | Fournissez une interface permettant aux pilotes de périphérique Adapter/A SCSI-2 Fast / Wide et SCSI-2 Adapter/A à l'adaptation/A d'accéder aux cartes ou aux périphériques SCSI. |