Fichier spécial rmt
Objectif
Permet d'accéder au pilote de périphérique de support de stockage en bloc à accès séquentiel.
Descriptif
Les bandes magnétiques sont utilisées principalement pour la sauvegarde, les archives de fichiers et d'autres systèmes de stockage hors ligne. Les bandes sont accessibles via les fichiers spéciaux /dev/rmt0, ..., /dev/rmt255 . R dans le nom de fichier spécial indique l'accès à brut via l'interface de fichier spécial de caractères. Une unité de bande ne se prête pas bien à la catégorie d'une unité par bloc. Par conséquent, seuls les fichiers spéciaux d'interface de caractères sont fournis.
Les fichiers spéciaux associés à chaque unité de bande déterminent l'action à effectuer lors des opérations d'ouverture ou de fermeture. Ces fichiers dictent également, pour les unités applicables, à quel niveau les données de densité doivent être écrites sur bande. Le tableau suivant présente les noms de ces fichiers spéciaux et leurs caractéristiques correspondantes:
| Nom de fichier spécial | Caractéristiques |
|---|---|
| /dev/rmt* |
|
| /dev/rmt*.1 |
|
| /dev/rmt*.2 |
|
| /dev/rmt*.3 |
|
| /dev/rmt*.4 |
|
| /dev/rmt*.5 |
|
| /dev/rmt*.6 |
|
| /dev/rmt*.7 |
|
- Les valeurs du paramètre de densité #1 et du paramètre de densité #2 proviennent d'attributs d'unité de bande qui peuvent être définis à l'aide de SMIT. En règle générale, le paramètre de densité #1 est défini sur la densité la plus élevée possible pour l'unité de bande, tandis que le paramètre de densité #2 est défini sur une densité plus faible. Toutefois, les paramètres de densité ne sont pas requis pour suivre ce modèle.
- La valeur de densité (octets par pouce) est ignorée lors de l'utilisation d'une unité de bande magnétique qui ne prend pas en charge les densités multiples. Pour les unités de bande qui prennent en charge des densités multiples, la valeur de densité s'applique uniquement lors de l'écriture sur la bande. Lors de la lecture, l'unité est définie par défaut sur la densité d'écriture de la bande.
- La plupart des unités de bande utilisent une taille de bloc de 512 octets. L'unité de bande 8mm utilise une taille de bloc minimale de 1024 octets. L'utilisation de SMIT pour réduire la taille de bloc va gaspiller de l'espace.
Usage Considerations
La plupart des opérations sur bande sont implémentées à l'aide des sous-routines ouvrir, lecture, écritureet fermer . Toutefois, à des fins de diagnostic, la sous-routine openx est requise.
Ouvrir et fermer des sous-routines
Il faut être prudent lors de la fermeture d'un fichier après l'écriture. Si l'application inverse les données qui viennent d'être écrites, aucune marque de fichier ne sera écrite. Toutefois, pour les unités de bande qui permettent la mise à jour par bloc, à moins que les espaces de l'application dans le sens inverse ou ne renvoient la position de la bande au début de la bande (BOT), une ou deux marques de fichier seront écrites à la fermeture de l'unité. (Le nombre de marques de fichier dépend du type de fichier spécial.)
Pour les travaux multibande, le fichier spécial doit être ouvert et fermé pour chaque bande. L'utilisateur n'est pas autorisé à continuer si le fichier spécial est ouvert et que la bande a été modifiée.
La sous-routine openx est principalement destinée à être utilisée par les commandes et utilitaires de diagnostic. Des droits appropriés sont requis pour l'exécution. L'exécution de cette sous-routine sans l'autorité appropriée se traduit par une valeur de retour de -1, avec la variable globale errno définie sur EPERM.
lire et écrire des sous-routines
Lorsqu'elle est ouverte en lecture ou en écriture, la bande est supposée être positionnée comme vous le souhaitez. Lorsque la bande est ouverte en tant que no-rewind-on-close (/dev/rmt*.1) et qu'un fichier est écrit, une marque de fichier unique est écrite à la fermeture de la bande. Lorsque la bande est ouverte en tant que rembobinage à la fermeture (/dev/rmt *) et qu'un fichier est écrit, une marque de fichier double est écrite à la fermeture de la bande. Lorsque la bande est ouverte sans rembobinage à la fermeture et qu'elle est lue à partir d'un fichier, la bande est positionnée à la fermeture après la marque de fin de fichier (EOF) qui suit les données qui viennent d'être lues.
En choisissant spécifiquement le fichier rmt , il est possible de créer plusieurs bandes de fichiers.
Bien que les bandes soient accessibles via des fichiers spéciaux d'interface de caractères, le nombre d'octets requis par une opération de lecture ou d'écriture doit être un multiple de la taille de bloc définie pour l'unité de bande magnétique. Lorsque l'unité de bande est en mode de bloc variable, les demandes de lecture inférieures à la taille de bloc de la bande renvoient le nombre d'octets demandés et définissent la variable globale n ° d'erreur sur la valeur 0. Dans ce cas, le paramètre Extension de la sous-routine readx doit être défini sur TAPE_SHORT_READ.
Lors d'une lecture, la taille d'enregistrement est renvoyée en tant que nombre d'octets lus, jusqu'à la taille de mémoire tampon spécifiée. Si une condition de fin de fichier est détectée, une lecture de longueur nulle est renvoyée, la bande étant positionnée après la fin de fichier.
Une condition de fin de support (EOM) détectée lors d'une opération de lecture ou d'écriture entraîne le renvoi du nombre d'octets correctement prêts ou écrits. Lorsqu'une écriture est tentée après que le dispositif a atteint l'EOM, une valeur de -1 est renvoyée avec la variable globale errno réglée sur la valeur ENXIO. Lorsqu'une lecture est tentée après que le périphérique a atteint la fin de la période d'exécution, une lecture de longueur nulle est renvoyée. Les lectures successives continuent à renvoyer une lecture de longueur nulle.
Mise en mémoire tampon des données avec une unité de bande: Certaines unités de bande contiennent une mémoire tampon de données pour optimiser la vitesse de transfert des données lors de l'écriture sur bande. Une opération d'écriture envoyée sur bande est renvoyée comme terminée lorsque les données sont transférées dans la mémoire tampon de données de l'unité de bande. Les données de la mémoire tampon sont ensuite écrites sur la bande de manière asynchrone. Par conséquent, la vitesse de transfert des données augmente car l'hôte n'a pas besoin d'attendre la fin des E-S.
Deux modes sont fournis par le pilote d'unité de bande pour faciliter l'utilisation de ces tampons de données. Le mode non mis en mémoire tampon permet aux écritures sur bande de contourner la mémoire tampon de données et d'accéder directement à la bande. En mode en mémoire tampon, toutes les sous-routines d'écriture sont renvoyées comme terminées lorsque les données de transfert ont été correctement écrites dans la mémoire tampon de l'unité de bande. Le pilote de périphérique ne vide pas la mémoire tampon de données tant que le fichier spécial n'est pas fermé ou qu'une condition EOM n'est pas détectée.
Si une condition EOM est détectée lors de l'exécution en mode tampon, l'unité tente de vider la mémoire tampon de données de l'unité. Le nombre résiduel peut dépasser la longueur du transfert d'écriture en mode tampon. Dans certains cas, le vidage des données résiduelles peut effectivement entraîner l'exécution de la bande hors de la bobine. L'un ou l'autre cas est considéré comme un échec et se traduit par une valeur de retour de -1, la variable globale errno prenant la valeur EIO. Ces erreurs peuvent nécessiter l'exécution de l'utilisateur en mode non tampon.
Remarques sur les fichiers spéciaux rmt: Les échecs qui entraînent une réinitialisation de l'unité lors de la lecture ou de l'écriture sur bande nécessitent la fermeture du fichier spécial et le redémarrage du travail. Toutes les commandes émises après l'apparition de cette condition et jusqu'à ce que le fichier spécial soit fermé se traduisent par une valeur de retour de -1, la variable globale errno étant fixée à EIO. Les erreurs de type non réinitialisé (c'est-à-dire les erreurs de support ou de matériel) entraînent le positionnement de la bande à l'endroit où l'erreur s'est produite.
Pour les travaux multibande, le fichier spécial doit être ouvert et fermé pour chaque bande. L'utilisateur n'est pas autorisé à continuer si le fichier spécial est ouvert et que la bande a été modifiée.
Un signal reçu par le pilote d'unité de bande provoque l'abandon de la commande en cours. Par conséquent, l'application arrête les commandes consommatrices de temps (par exemple, une opération d'effacement) sans recycler l'alimentation de l'unité ou attendre qu'un dépassement de délai se produise.
L'utilisation de zéro (0) comme paramètre de taille de bloc indique que la taille de bloc est de longueur variable.
Sous-routine ioctl
Une seule opération ioctl , IOCINFO, est définie pour tous les pilotes de périphérique qui utilisent la sous-routine ioctl . Pour le fichier spécial rmt , l'opération STIOCTOP a également été définie.
Opération ioctl IOCINFO: L'opération ioctl IOCINFO renvoie une structure définie dans le fichier /usr/include/sys/devinfo.h .
L'opération STIOCTOP ioctl: L'opération ioctl STIOCTOP fournit des opérations d'exécution de commande, telles que l'effacement et la retension. Le paramètre de la sous-routine ioctl utilisant l'opération STIOCTOP spécifie l'adresse d'une structure stop , comme défini dans le fichier /usr/include/sys/tape.h .
L'opération trouvée dans lest_opdans la structure arrêter est effectuéest_counttemps, sauf pour les opérations de rembobinage, d'effacement et de retension. Les opérations disponibles sont les suivantes:
| Article | Descriptif |
|---|---|
| RSTREW | Rembobiner. |
| STOFFL | Rembobiner et décharger la bande. Une bande doit être insérée avant que l'unité puisse être réutilisée. |
| STERASE | Effacer la bande ; laisser au point de chargement. |
| RUE | Bande de retension ; laisser au point de charge. |
| STWEOF | Marque d'écriture et de fin de fichier. |
| STFSF | Fichier d'espace de réacheminement. |
| STFSR | Enregistrement d'espace de réacheminement. |
| STRSF | Fichier d'espace inversé. |
| STRSR | Enregistrement d'espace inversé. |
| STDEOF (STDE) | Désactivez la vérification de fin de fichier. Remarque: L'utilisation de la commande STDEOF (STDE) permet à une application d'écrire au-delà de la fin de la bande. Lors de la désactivation de la vérification de fin de fichier à l'aide de la commande STDEOF (STDE) , il incombe à l'application de se prémunir contre les conditions d'erreur pouvant survenir lors de l'utilisation de cette commande.
|
Codes d'erreur
Outre les codes d'erreur généraux répertoriés pour les sous-routines ioctl, ouvrir, lectureet écriture , les codes d'erreur spécifiques suivants peuvent également se produire:
| Article | Descriptif |
|---|---|
| FEAGA | Une opération d'ouverture a été tentée sur une unité déjà ouverte. |
| EBUSY | L'unité cible est réservée par un autre initiateur. |
| EINVAL | O_APPEND est fourni en tant que mode d'ouverture. |
| EINVAL | Un paramètre noctet d'une sous-routine lecture ou écriture n'est pas un multiple pair de la taille de bloc. |
| EINVAL | Un paramètre de la sous-routine ioctl n'est pas valide. |
| EINVAL | L'opération ioctl demandée n'est pas prise en charge sur l'unité en cours. |
| EIO | Impossible d'espacer vers l'avant ou vers l'arrièrest_countavant de rencontrer une condition EOM ou une marque de fichier. |
| EIO | Impossible d'espacer vers l'avant ou vers l'arrièrest_countmarques de fichier avant de rencontrer une condition de fin de modèle. |
| EMEDIA | L'unité de bande a rencontré une erreur de support irrémédiable. |
| ENOMEM | Le nombre d'octets requis pour la lecture d'un enregistrement de longueur variable sur la bande est inférieur à la taille réelle (en octets) de l'enregistrement de longueur variable. |
| ENOTREADY | Il n'y a pas de bande dans l'unité ou l'unité n'est pas prête. |
| ENXIO | Une opération d'écriture a été tentée alors que la bande était à la fin de l'opération. |
| EPERM | Le sous-programme demandé requiert les droits appropriés. |
| ETIMEDOUT | Une commande a dépassé le délai d'attente. |
| EWRPROTECT | Une opération d'ouverture en lecture / écriture a été tentée sur une bande en lecture seule. |
| EWRPROTECT | Une opération ioctl ayant pour effet d'affecter un support a été tentée sur une bande en lecture seule. |