Pilote de périphérique FC sctape
Objectif
Prend en charge le Fibre Channel Protocol for SCSI (FCP) pour le pilote de périphérique de stockage en vrac à accès séquentiel.
Syntaxe
#include <sys/devinfo.h>
#include <sys/scsi.h>
#include <sys/tape.h>
#include <sys/pcm.h>
#include <sys/mpio.h>Sous-routines dépendantes de l'unité
La plupart des opérations de bande sont implémentée à l'aide des sous-routines Ouvert, Lire, écrireet Fermer . Toutefois, le sous-programme Openx doit être utilisé si l'unité doit être ouverte en mode diagnostic.
Sous-routines ouvertes et proches
Le sous-programme Openx est destiné à être utilisé par les commandes de diagnostic et les utilitaires. Une autorité appropriée est requise 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éfinit le numéro d'erreur variable globale à EPERM .
La sous-routine Openx permet au pilote de périphérique d'entrer en mode diagnostic et désactive la logique de relance de commande. Cette action permet l'exécution d'opérations ioctl qui exécutent des fonctions spéciales associées au traitement du diagnostic. D'autres fonctions Openx , telles que les ouvertures forcées et les réservations conservées, sont également disponibles.
La sous-routine open applique une règle de réservation basée sur l'attribut ODM reserve_policy .
Le paramètre Ext transmis au sous-programme Openx sélectionne l'opération à utiliser pour l'unité cible. Le paramètre ext est défini dans le fichier /usr/include/sys/scsi.h . Ce paramètre peut contenir n'importe quelle combinaison des valeurs d'indicateur suivantes logiquement ORed ensemble:
| Article | Descriptif |
|---|---|
| SC_DIAGNOSTIC | Place l'unité sélectionnée en mode diagnostic. Ce mode est singulièrement entrant. Lorsqu'une unité est en mode diagnostic, les opérations SCSI sont exécutées lors des opérations Ouvert ou Fermer , et la consignation des erreurs est désactivée. En mode diagnostic, seules les opérations Fermer et ioctl sont acceptées. Tous les autres sous-programmes pris en charge par le périphérique renvoient une valeur de-1 et réglez le numéro d'erreur variable globale à une valeur de ACCÈS . Une unité ne peut être ouverte en mode diagnostic que si l'unité cible n'est pas ouverte. Si une tentative est effectuée pour ouvrir un périphérique en mode Diagnostic et que le périphérique cible est déjà ouvert, le sous-programme renvoie une valeur de-1 et définit le numéro d'erreur variable globale à une valeur de ACCÈS . |
| SC_FORCED_OPEN | Force une réinitialisation de l'unité de bus (BDR), qu'un autre initiateur dispose ou non de l'unité réservée. La réinitialisation de l'unité de bus SCSI est envoyée à l'unité avant le début de la séquence d'ouverture. Sinon, l'opération Ouvert s'exécute normalement. |
| SC_RETAIN_RESERVATION | Conserve la réservation de l'unité après une opération Fermer en ne émettant pas la version. Cet indicateur empêche les autres initiateurs d'utiliser l'unité à moins qu'ils ne brisent la réservation de la machine hôte. |
Options FCP pour le sous-programme openx dans Concepts de programmation de prise en charge des extensions et des périphériques du noyau fournit des informations plus spécifiques sur les opérations Ouvert .
Sous-routine ioctl
L'opération STIOCMD ioctl permet d'envoyer des commandes SCSI directement sur une unité de bande. Cela permet à une application d'émettre des commandes SCSI spécifiques qui ne sont pas directement prises en charge par le pilote de périphérique de bande.
Pour utiliser l'opération STIOCMD , l'unité doit être ouverte en mode diagnostic. Si cette commande est tentée alors que l'appareil 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 . L'opération STIOCMD transmet l'adresse d'une structure Sc_iocmd . Cette structure est définie dans le/usr/include/sys/scsi.h déposer.
Les opérations ioctl suivantes ne sont disponibles que pour les unités de bande FC compatibles MPIO:
| Article | Descriptif |
|---|---|
| STPATHIOCMD | La commande STPATHIOCMD prend comme entrée un argument de pointeur qui pointe vers une structure sctape_pathiocmd unique. La commande STPATHIOCMD se comporte exactement comme la commande STIOCMD , sauf que le chemin d'entrée est utilisé plutôt que la sélection de chemin normale effectuée par le PCM. Le chemin STPATHIOCMD est utilisé pour la commande STIOCMD , quel que soit le chemin spécifié par une commande STPATHFORCE ioctl. Un chemin ne peut pas être déconfiguré pendant qu'il est forcé. |
| STPATHFORCE | La commande STPATHFORCE prend comme entrée un ID de chemin Ushort . L'ID de chemin doit correspondre à l'un des ID de chemin dans CuPath ODM. L'ID chemin indique un chemin à utiliser pour toutes les commandes d'E-S suivantes, en remplaçant les chemins STPATHFORCE précédents. Un argument zéro (0) indique que le forçage de chemin est arrêté et que la sélection de chemin MPIO normale doit être reprise. Le système PCM KE suit le forçage des E-S sur un chemin. Le pilote de périphérique n'est pas au courant de cet état. Les commandes d'E-S envoyées avec STPATHIOCMD remplacent l'option STPATHFORCE et envoient l'entrée-sortie vers le bas du chemin spécifié dans la structure St_pathiocmd . |
| STPATHPASSTHRU | La commande STPATHPASSTHRU prend comme entrée un argument de pointeur qui pointe vers une structure Sctape_pathiocmd unique. La commande STPATHPASSTHRU se comporte exactement comme STIOCMD, sauf que le chemin d'entrée est utilisé plutôt que la sélection de chemin normale. |
| STPCMPASSTHRU | La commande STPCMPASSTHRU prend en entrée une structure spécifique au PCM ; elle n'est pas définie par AIX. La structure spécifique au PCM est transmise directement au PCM. Cette structure peut être utilisée pour déplacer des informations vers ou à partir d'un PCM. |
Conditions d'erreur
En plus de ces erreurs répertoriées, les sous-routines Ioctl, Ouvert, Lireet écrire ne sont pas prises en compte dans les cas suivants:
| Article | Descriptif |
|---|---|
| ENCORE UNE FOIS | Indique qu'une tentative d'ouverture d'un périphérique était déjà ouverte. |
| EBUSY | Indique que l'unité cible est réservée par un autre initiateur. |
| EINVAL | Indique qu'une valeur de O_APPEND est fournie comme mode d'ouverture. |
| EINVAL | Indique que le paramètre Nbyte fourni par une opération Lire ou écrire n'est pas un multiple de la taille de bloc. |
| EINVAL | Indique qu'un paramètre d'une opération ioctl n'est pas valide. |
| EINVAL | Indique que l'opération ioctl demandée n'est pas prise en charge sur l'unité en cours. |
| EIO | Indique que l'unité de bande a été réinitialisée ou que la bande a été modifiée. Cette erreur est renvoyée à l'ouverture si l'opération précédente sur bande a laissé la bande positionné au-delà du début de la bande lors de la fermeture. |
| EIO | Indique que l'unité n'a pas pu aller de l'avant ou inverser le nombre d'enregistrements spécifiés par la zone Nombre_statistiques avant de rencontrer une MOE (fin de support) ou une marque de fichier. |
| EMEDIA | Indique qu'une opération Ouvert a été tenta pour un adaptateur qui possède déjà le nombre maximal autorisé d'unités ouvertes. |
| ENOTREADY | Indique qu'il n'y a pas de bande dans l'unité ou que l'unité n'est pas prête. |
| ENXIO | Indique qu'il y a eu une tentative d'écriture sur une bande d'EOM. |
| EPERM | Indique que cette sous-routine requiert des droits appropriés. |
| ETIMEDOUT | Indique qu'une commande a expiré. |
| EWRPROTECT | Indique qu'une opération Ouvert demandant le mode lecture / écriture a été tentées sur une bande en lecture seule. |
| EWRPROTECT | Indique qu'une opération ioctl qui affecte le support a été tentés sur une bande en lecture seule. |
Fiabilité et facilité d'accès à l'information
Les erreurs renvoyées par les unités de bande sont les suivantes:
| Article | Descriptif |
|---|---|
| COMMANDE ABANDONNÉ | Indique que l'unité a mis fin à la commande. |
| Vérification à vide | Indique qu'une commande Lire a rencontré une bande vierge. |
| PROTECTION DES DONNÉES | Indique qu'une tentative d'écriture a été effectuée sur une bande protégée en écriture. |
| BON ACHÈVEMENT | Indique que la commande a abouti. |
| Erreur matérielle | Indique qu'une erreur matérielle irrémédiable s'est produite lors de l'exécution de la commande ou lors d'un autotest. |
| Illegal request | Indique un paramètre de commande ou de commande non conforme. |
| Erreur de support | Indique que la commande s'est terminée avec une condition d'erreur de support irrémédiable. Cette condition peut être causée par un défaut de bande ou par une tête sale. |
| Non prêt | Indique que l'unité logique est hors ligne. |
| Erreur récupérée | Indique que la commande a réussi une fois le rétablissement appliqué. |
| Attention unité | Indique que l'unité a été réinitialisée ou que la puissance a été activée. |
Les erreurs de commande moyenne, matérielle et abandonnée de la liste précédente doivent être consignées chaque fois qu'elles se produisent. L'erreur COMMANDE ABANDONNÉ peut être récupérable, mais l'erreur est consignée si la reprise échoue. For the ERREUR RÉCUPÉRÉE and recovered COMMANDE ABANDONNÉ error types, thresholds are maintained; when they are exceeded, an error is logged. Les seuils sont ensuite supprimés.
Valeurs d'enregistrement d'erreur pour les erreurs de support de l'unité de bande
Les zones définies dans le modèle d'enregistrement d'erreur pour les erreurs de support de l'unité de bande sont les suivantes:
| Article | Descriptif |
|---|---|
| Comment | Erreur de support de bande égale à. |
| Class | Egal à H, indiquant une erreur matérielle. |
| Report | Equals a value of True, qui indique que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | Equals a value of True, qui indique qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | Equals a value of False, qui indique que cette erreur n'est pas alertable. |
| Err_Type | Equals a value of Perm, qui indique un échec permanent. |
| Err_Desc | Corde une valeur de 1332, ce qui indique un échec de l'opération de bande. |
| Prob_Causes | Equale une valeur de 5003, ce qui indique un support de bande. |
| User_Causes | Equale une valeur de 5100 et 7401, qui indique une cause provenant de la bande et du support défectueux, respectivement. |
| User_Actions | Egal à 1601 et 0000, qui indique, respectivement, que le support amovible doit être remplacé et que l'opération est rejugée, et que des procédures d'identification des incidents doivent être exécutées. |
| Inst_Causes | Néant. |
| Inst_Actions | Néant. |
| Fail_Causes | Egal à 5003, ce qui indique un support de bande. |
| Fail_Actions | Egal à 1601 et 0000, ce qui indique, respectivement, que le support amovible doit être remplacé et que l'opération est rejugée et que les procédures de détermination des problèmes doivent être exécutées. |
La zone Données Detail_Data contient le type de commande, l'état de l'unité et de l'adaptateur, ainsi que les informations de détection des demandes provenant de l'unité en erreur. La zone Données Detail_Data est contenue dans la structure Rec . Cette structure est définie dans le fichier /usr/include/sys/errids.h . La structure sc_error_log_df , qui décrit les informations contenues dans la zone Detail_Data , est définie dans le fichier /usr/include/sys/scsi.h .
Valeurs d'enregistrement des erreurs pour les erreurs de commande sur bande ou matériel
Les zones de la structure err_hdr , telles que définies dans le fichier /usr/include/sys/erec.h pour les erreurs matérielles et les erreurs de commande abandonnées, sont les suivantes:
| Article | Descriptif |
|---|---|
| Comment | Egal à un matériel de bande ou à une erreur de commande abandonnée. |
| Class | Equale une valeur de H, ce qui indique une erreur matérielle. |
| Report | Equals a value of True, qui indique que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | Equals a value of True, qui indique qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | Egal à une valeur FALSE, ce qui indique que cette erreur n'est pas alertable. |
| Err_Type | Equals a value of Perm, qui indique un échec permanent. |
| Err_Desc | Corde une valeur de 1331, ce qui indique une défaillance de l'unité de bande. |
| Prob_Causes | Equale une valeur de 6314, ce qui indique une erreur d'unité de bande. |
| User_Causes | Néant. |
| User_Actions | Egal à 0000, indiquant que des procédures d'identification des incidents doivent être exécutées. |
| Inst_Actions | Néant. |
| Fail_Causes | Egal à 5003 et 6314, indiquant que la cause d'échec est la bande et l'unité de bande, respectivement. |
| Fail_Actions | Egal à 0000 pour effectuer des procédures d'identification des incidents. |
La zone Données Detail_Data contient le type de commande, l'état de l'unité et de l'adaptateur, ainsi que les informations de détection des demandes provenant de l'unité en erreur. La zone Données Detail_Data est contenue dans la structure Rec . Cette structure est définie dans le fichier /usr/include/sys/errids.h . La structure sc_error_log_df , qui décrit les informations contenues dans la zone Detail_Data , est définie dans le fichier /usr/include/sys/scsi.h .
Valeurs d'enregistrement d'erreur pour le seuil d'erreur récupéré sur bande dépassé
Les zones définies dans la structure err_hdr , comme défini dans le fichier /usr/include/sys/erec.h pour les erreurs récupérées qui ont dépassé le compteur de seuil, sont les suivantes:
| Article | Descriptif |
|---|---|
| Comment | Indique que le seuil d'erreur de récupération de bande a été dépassé. |
| Class | Equale une valeur de H, ce qui indique une erreur matérielle. |
| Report | Equals a value of True, qui indique que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | Equals a value of True, qui indique qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | Egal à une valeur FALSE, ce qui indique que cette erreur n'est pas alertable. |
| Err_Type | Equale une valeur de TEMP, ce qui indique un échec temporaire. |
| Err_Desc | Corde une valeur de 1331, ce qui indique une défaillance de l'unité de bande. |
| Prob_Causes | Egal à 6314, ce qui indique la cause probable est l'unité de bande. |
| User_Causes | Egal à 5100 et 7401, ce qui indique que le support est défectueux et que la tête de lecture / écriture est sale, respectivement. |
| User_Actions | Egal à 1601 et 0000, ce qui indique que les supports amovibles doivent être remplacés et que l'opération est rejugée et que les procédures de détermination des problèmes doivent être exécutées, respectivement. |
| Inst_Causes | Néant. |
| Inst_Actions | Néant. |
| Fail_Causes | Egal à 5003 et 6314, ce qui indique que la cause est la bande et l'unité de bande, respectivement. |
| Fail_Actions | Egale une valeur de 0000, ce qui indique que des procédures de détermination des problèmes doivent être exécutées. |
La zone Données Detail_Data contient le type de commande, l'état de l'unité et de l'adaptateur, ainsi que les informations de détection des demandes provenant de l'unité en erreur. Cette zone est contenue dans la structure Rec . La structure err_rec est définie dans le fichier /usr/include/sys/errids.h . La zone Données Detail_Data indique également le type d'erreur du seuil dépassé. La structure sc_error_log_df , qui décrit les informations contenues dans la zone Detail_Data , est définie dans le fichier /usr/include/sys/scsi.h .
Erreur lors de l'enregistrement des valeurs pour l'adaptateur SCSI de bande-Erreurs détectées
Les zones de la structure err_hdr , telles que définies dans le fichier /usr/include/sys/erec.h pour les erreurs détectées par l'adaptateur, sont les suivantes:
| Article | Descriptif |
|---|---|
| Comment | Egal à une erreur détectée par l'adaptateur FC. |
| Class | Equale une valeur de H, ce qui indique une erreur matérielle. |
| Report | Equals a value of True, qui indique que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | Equals a value of True, qui indique qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | Egal à une valeur FALSE, ce qui indique que cette erreur n'est pas alertable. |
| Err_Type | Corse une valeur de PERM, ce qui indique un échec permanent. |
| Err_Desc | Corde une valeur de 1331, ce qui indique une défaillance de l'unité de bande. |
| Prob_Causes | Equals valeurs de 3300 et 6314, qui indique une défaillance de l'adaptateur et de l'unité de bande, respectivement. |
| User_Causes | Néant. |
| User_Actions | Equale une valeur de 0000, ce qui indique que des procédures d'identification des incidents doivent être exécutées. |
| Inst_Causes | Néant. |
| Inst_Actions | Néant. |
| Fail_Causes | Equals valeurs de 3300 et 6314, qui indique une défaillance de l'adaptateur et de l'unité de bande, respectivement. |
| Fail_Actions | Egale une valeur de 0000, ce qui indique que des procédures de détermination des problèmes doivent être exécutées. |
La zone Données Detail_Data contient le type de commande et l'état de l'adaptateur. Cette zone est contenue dans la structure err_rec , qui est définie par le fichier /usr/include/sys/err_rec.h . Les informations de détection des demandes ne sont pas disponibles avec ce type d'erreur. La structure sc_error_log_df décrit les informations contenues dans la zone Detail_Data et est définie dans le fichier /usr/include/sys/scsi.h .
Valeurs d'enregistrement des erreurs pour les erreurs de nettoyage de l'unité de bande
Certaines unités de bande renvoient des erreurs lorsqu'elles ont besoin d'être nettoyages. Les erreurs qui se produisent lorsque l'unité a besoin d'être nettoyant sont regroupées sous cette classe.
| Article | Descriptif |
|---|---|
| Comment | Indique que l'unité de bande a besoin d'être nettoyant. |
| Class | Equale une valeur de H, ce qui indique une erreur matérielle. |
| Report | Equals a value of True, qui indique que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | Equals a value of True, qui indique qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | Egal à une valeur FALSE, ce qui indique que cette erreur n'est pas alertable. |
| Err_Type | Equale une valeur de TEMP, ce qui indique un échec temporaire. |
| Err_Desc | Equale une valeur de 1332, ce qui indique une erreur d'opération de bande. |
| Prob_Causes | Equale une valeur de 6314, ce qui indique que la cause probable est l'unité de bande. |
| User_Causes | Egal à 7401, ce qui indique une tête de lecture / écriture sale. |
| User_Actions | Equale une valeur de 0000, ce qui indique que des procédures d'identification des incidents doivent être exécutées. |
| Inst_Causes | Néant. |
| Inst_Actions | Néant. |
| Fail_Causes | Equale une valeur de 6314, ce qui indique que la cause est l'unité de bande. |
| Fail_Actions | Egale une valeur de 0000, ce qui indique que des procédures de détermination des problèmes doivent être exécutées. |
La zone Données Detail_Data contient le type de commande et l'état de l'adaptateur, ainsi que les informations de détection des demandes provenant de l'unité en erreur. Cette zone est contenue dans la structure err_rec , qui est définie par le fichier /usr/include/sys/errids.h . La structure sc_error_log_df décrit les informations contenues dans la zone Detail_Data et est définie dans le fichier /usr/include/sys/scsi.h .
Valeurs d'enregistrement d'erreur pour les erreurs inconnues
Les erreurs qui se produisent pour des raisons inconnues sont regroupées dans cette classe. Les erreurs de protection des données entrent dans cette catégorie. Ces erreurs, détectées par le pilote de périphérique de bande, ne sont jamais visibles sur l'unité de bande.
La structure Err_hdr pour les erreurs inconnues décrit les zones suivantes:
| Article | Descriptif |
|---|---|
| Comment | Egal à une erreur de bande inconnue. |
| Class | Egal à toutes les classes d'erreurs. |
| Report | Equals a value of True, qui indique que cette erreur doit être incluse lorsqu'un rapport d'erreur est généré. |
| Log | Equals a value of True, qui indique qu'une entrée de journal des erreurs doit être créée lorsque cette erreur se produit. |
| Alert | Egal à une valeur FALSE, ce qui indique que cette erreur n'est pas alertable. |
| Err_Type | Equals a value of UNKN, qui indique que le type d'erreur est inconnu. |
| Err_Desc | Equals a value of 0xFE00, qui indique que la description de l'erreur est inconnue. |
| Prob_Causes | Corde les valeurs suivantes:
|
| User_Causes | Néant. |
| User_Actions | Néant. |
| Inst_Causes | Néant. |
| Inst_Actions | Néant. |
| Fail_Causes | Equals a value of 0xFFFF, qui indique que les causes d'échec sont inconnues. |
| Fail_Actions | Equals 0000, ce qui indique que des procédures de détermination des problèmes doivent être exécutées. |
La zone Données Detail_Data contient le type de commande et l'état de l'adaptateur, ainsi que les informations de détection des demandes provenant de l'unité en erreur. La zone Données Detail_Data est contenue dans la structure Rec . Cette zone est contenue dans le fichier /usr/include/sys/errids.h . La structure sc_error_log_df décrit les informations contenues dans la zone Detail_Data et est définie dans le fichier /usr/include/sys/scsi.h .
Reportez-vous à Spécification Fibre Channel (FC) pour l'unité applicable pour le format des informations de détection de demande particulières.