Pilote de périphérique FC sctape

Remarque: The /dev/rmt0 through /dev/rmt255 special files provide access to magnetic tapes. Les bandes magnétiques sont utilisées principalement pour la sauvegarde, les archives de fichiers et d'autres stockages hors ligne.

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.

Remarque: Il existe des erreurs d'adaptateur liées à l'unité qui sont consignées chaque fois qu'elles se produisent.

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:
  • 3300, ce qui indique une défaillance de l'unité de bande
  • 5003, qui indique un incident de bande
  • 6314, ce qui indique un échec de l'adaptateur
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.