Man page - st(4)

Packages contains this manual

Available languages:

en fr pt_BR es pl ja ru de

Manual

st

NOM
SYNOPSIS
DESCRIPTION
Transfert de données
Ioctls
MTIOCTOP - Effectuer une opération sur la bande
MTIOCGET — Obtenir l’état
MTIOCPOS — Obtenir la position de la bande
VALEUR RENVOYÉE
FICHIERS
NOTES
VOIR AUSSI
TRADUCTION

NOM

st - Lecteur de bandes SCSI

SYNOPSIS

#include <sys/mtio.h>

int ioctl(int fd , int request [, (void *) arg3 ]);
int ioctl(int
fd , MTIOCTOP, (struct mtop *) mt_cmd );
int ioctl(int
fd , MTIOCGET, (struct mtget *) mt_status );
int ioctl(int
fd , MTIOCPOS, (struct mtpos *) mt_pos );

DESCRIPTION

Le pilote de périphérique st fournit une interface vers un grand nombre de lecteurs de bandes SCSI. Actuellement, ce pilote prend le contrÎle de tous les périphériques détectés de type « accÚs séquentiel ». Le pilote st utilise un numéro majeur valant 9.

Chaque pĂ©riphĂ©rique utilise huit numĂ©ros mineurs. Les 5 bits de poids faible des numĂ©ros mineurs sont assignĂ©s sĂ©quentiellement dans l’ordre de dĂ©tection. Avec le noyau 2.6, les bits au-delĂ  des 8 bits de poids faible sont concatĂ©nĂ©s aux 5 bits de poids faible pour former le numĂ©ro de lecteur de bande. Les numĂ©ros mineurs peuvent ĂȘtre groupĂ©s en deux ensembles de quatre numĂ©ros : les numĂ©ros mineurs principaux des pĂ©riphĂ©riques (avec rembobinage automatique, n ) et les numĂ©ros mineurs des pĂ©riphĂ©riques sans rembobinage automatique ( n + 128). Les pĂ©riphĂ©riques ouverts avec le numĂ©ro principal recevront une commande REWIND Ă  la fermeture. Les pĂ©riphĂ©riques ouverts avec le numĂ©ro « no-rewind » ne la recevront pas. Notez qu’essayer de positionner la bande d’un pĂ©riphĂ©rique avec rembobinage automatique, en utilisant par exemple mt, ne produit pas le rĂ©sultat dĂ©siré : la bande est Ă  nouveau rembobinĂ©e aprĂšs l’utilisation de la commande mt et la commande suivante prend effet dĂšs le dĂ©but de la bande.

Au sein de chaque groupe, quatre numĂ©ros mineurs sont disponibles pour dĂ©finir des pĂ©riphĂ©riques avec des caractĂ©ristiques diffĂ©rentes (taille de bloc, compression, densitĂ©, etc.). Lorsque le systĂšme dĂ©marre, seul le premier pĂ©riphĂ©rique est disponible. Les trois autres sont activĂ©s lorsque les caractĂ©ristiques par dĂ©faut sont dĂ©finies (voir plus bas). En modifiant les constantes Ă  la compilation, on peut modifier la rĂ©partition entre le nombre maximal de lecteurs de bandes et le nombre de numĂ©ros mineurs par lecteur. Les allocations par dĂ©faut permettent de contrĂŽler 32 lecteurs de bandes. Par exemple, il est possible de contrĂŽler jusqu’à 64 lecteurs avec deux numĂ©ros mineurs pour des options diffĂ©rentes.

Les fichiers spéciaux sont créés typiquement ainsi :

mknod -m 660 /dev/st0 c 9 0
mknod -m 660 /dev/st0l c 9 32
mknod -m 660 /dev/st0m c 9 64
mknod -m 660 /dev/st0a c 9 96
mknod -m 660 /dev/nst0 c 9 128
mknod -m 660 /dev/nst0l c 9 160
mknod -m 660 /dev/nst0m c 9 192
mknod -m 660 /dev/nst0a c 9 224

Il n’existe pas de pĂ©riphĂ©riques blocs correspondants.

Le pilote utilise une mĂ©moire tampon interne qui doit ĂȘtre assez grande pour contenir au moins un bloc de donnĂ©es de la bande. Avant Linux 2.1.121, le tampon est allouĂ© sous la forme d’un seul bloc continu. Cela limite la taille de bloc au plus grand espace contigu allouable par le noyau. Cette limite est actuellement de 128 Ko pour les architectures 32 bits et de 256 Ko pour les 64 bits. Dans les noyaux plus rĂ©cents, le pilote alloue la mĂ©moire tampon en plusieurs parties disjointes si nĂ©cessaire. Par dĂ©faut, le nombre maximal de parties est 16. Cela signifie que la taille maximale de bloc est trĂšs grande (2 Mo si l’allocation de 16 blocs de 128 Ko rĂ©ussit).

La taille de la mĂ©moire tampon interne est dĂ©terminĂ©e par une constante Ă  la compilation du noyau, que l’on peut supplanter par une option au dĂ©marrage du systĂšme. De plus, le pilote essaie d’allouer un tampon temporaire plus grand lors de son exĂ©cution si cela s’avĂšre nĂ©cessaire. Toutefois l’allocation Ă  l’exĂ©cution de grands blocs contigus peut Ă©chouer, et il vaut mieux ne pas compter dessus avant Linux 2.1.121 (cela s’applique Ă©galement au chargement de module Ă  la demande avec kerneld ou kmod).

Le pilote ne gĂšre pas spĂ©cifiquement un type ou une marque de lecteur de bandes. AprĂšs le dĂ©marrage du systĂšme, les options du pĂ©riphĂ©rique sont dĂ©finies par le microcode du pĂ©riphĂ©rique. Par exemple, si celui-ci rĂ©clame un mode de blocs fixes, le lecteur de bandes utilisera ce mode. Les options peuvent ĂȘtre modifiĂ©es par des appels ioctl (2) explicites et restent effectives lorsque le pĂ©riphĂ©rique est fermĂ© puis rĂ©ouvert. La configuration des options affecte aussi bien les pĂ©riphĂ©riques avec rembobinage automatique que ceux sans.

Des options diffĂ©rentes peuvent ĂȘtre fournies pour diffĂ©rents pĂ©riphĂ©riques au sein du sous-groupe de quatre. Les options prennent effet Ă  l’ouverture du pĂ©riphĂ©rique. Par exemple, l’administrateur peut dĂ©finir un pĂ©riphĂ©rique qui Ă©crit des blocs fixes d’une certaine taille, et un qui Ă©crit avec des blocs de longueur variable (si le pĂ©riphĂ©rique accepte les deux modes).

Le pilote gĂšre les partitions de bandes si elles sont acceptĂ©es par le lecteur. (Notez que les partitions de bande n’ont rien Ă  voir avec les partitions de disques. Une bande partitionnĂ©e peut ĂȘtre vue comme un ensemble de bandes logiques dans le mĂȘme support). La gestion des partitions doit ĂȘtre activĂ© par un ioctl (2). L’emplacement de la bande est sauvegardĂ© au sein de chaque partition au cours des changements de partitions. La partition utilisĂ©e pour les opĂ©rations ultĂ©rieures est sĂ©lectionnĂ©e avec un ioctl (2). Le changement de partition est effectuĂ© au moment de la suivante opĂ©ration bande afin d’éviter les mouvements inutiles de la bande. Le nombre maximal de partitions sur une bande est dĂ©fini par une constante Ă  la compilation (4 par dĂ©faut). Le pilote contient un ioctl (2) qui peut formater une bande avec une ou deux partitions.

Le fichier spécial de périphérique /dev/tape est généralement un lien symbolique ou un lien matériel vers le lecteur de bandes par défaut.

Depuis Linux 2.6.2, le pilote exporte dans le répertoire de sysfs /sys/class/scsi_tape les périphériques attachés et certains de leurs paramÚtres.

Transfert de données

Le pilote accepte un fonctionnement aussi bien dans un mode de blocs fixes que dans un mode de blocs de longueur variable (si c’est acceptĂ© par le lecteur). En mode de blocs fixes, le pĂ©riphĂ©rique Ă©crit les blocs de la taille indiquĂ©e et la taille des blocs ne dĂ©pend pas de la quantitĂ© de donnĂ©es transmises lors de l’appel systĂšme. Dans le mode de longueur variable, un bloc de donnĂ©es est Ă©crit Ă  chaque appel systĂšme write et le nombre d’octets transmis indique la taille du bloc correspondant sur la bande. Notez que les blocs de la bande ne contiennent aucune information sur le mode d’écriture utilisé : la seule chose importante est d’utiliser lors de la lecture une commande qui accepte la taille des blocs de la bande.

En mode bloc de taille variable, le nombre d’octets Ă  lire n’a pas besoin de correspondre exactement Ă  la taille du bloc de la bande. Si le nombre d’octets demandĂ©s est plus grand que la taille du bloc suivant sur la bande, le pilote renvoie la quantitĂ© de donnĂ©es effectivement lues. Si la taille de bloc est plus grande que le nombre d’octets demandĂ©s, une erreur est renvoyĂ©e.

En mode fixe, le nombre d’octets demandĂ© peut ĂȘtre arbitraire, si la mĂ©moire tampon est activĂ©e, ou un multiple de la taille de bloc, si ce tampon est dĂ©sactivĂ©. Les noyaux antĂ©rieurs au 2.1.121 permettent l’écriture avec un nombre quelconque si les mĂ©moires tampons sont activĂ©es. Dans tous les autres cas (les noyaux antĂ©rieurs au 2.1.121 sans mĂ©moire tampon ou les noyaux plus rĂ©cents), le nombre d’octets Ă  Ă©crire doit ĂȘtre un multiple de la taille des blocs.

Dans Linux 2.6, le pilote essaie de transfĂ©rer les donnĂ©es directement entre la mĂ©moire tampon de l’utilisateur et le pĂ©riphĂ©rique. Si cela n’est pas possible, la mĂ©moire tapon interne au pilote de pĂ©riphĂ©rique est utilisĂ©e. Les raisons de ne pas utiliser des transferts directs sont entre autres un mauvais alignement de la mĂ©moire tampon de l’utilisateur (par dĂ©faut 512 octets mais cela peut ĂȘtre changĂ© par le pilote HBA), l’adaptateur SCSI ne peut pas atteindre un ou plusieurs blocs de la mĂ©moire tampon de l’utilisateur, etc.

Une marque « filemark » est automatiquement écrite sur la bande si la derniÚre opération avant fermeture était une écriture.

En lecture, une marque « filemark » provoque les Ă©vĂ©nements suivants : s’il reste des donnĂ©es dans le tampon lorsqu’on trouve la marque, les donnĂ©es en mĂ©moire sont renvoyĂ©es ; la lecture suivante renvoie zĂ©ro octet ; la lecture suivante renvoie les donnĂ©es du fichier suivant ; la fin des donnĂ©es enregistrĂ©es est signalĂ©e par un retour de zĂ©ro octet pour deux appels successifs en lecture. Enfin, le troisiĂšme appel renvoie une erreur.

Ioctls

Le pilote gĂšre trois requĂȘtes ioctl (2). Les requĂȘtes non reconnues par st sont transmises au contrĂŽleur SCSI . Les dĂ©finitions ci-dessous sont extraites de /usr/include/linux/mtio.h :

MTIOCTOP - Effectuer une opération sur la bande

Cette requĂȘte prend un paramĂštre de type (struct mtop *) . Certains contrĂŽleurs ne gĂšrent pas toutes les opĂ©rations. Le pilote renvoie une erreur EIO si le pĂ©riphĂ©rique n’accepte pas l’opĂ©ration.

/* Structure MTIOCTOP - pour les opérations sur bande : */
struct mtop {
short mt_op; /* opérations définies ci-dessous */
int mt_count; /* nombre d’opĂ©rations */
};

OpĂ©rations sur bande magnĂ©tique lors d’une utilisation normale :

MTBSF

Reculer la bande de mt_count marqueurs de fichier.

MTBSFM

Reculer la bande de mt_count filemarks. Repositionner la bande sur le cÎté EOT de la derniÚre marque de fichier.

MTBSR

Reculer la bande de mt_count enregistrements (blocs bande).

MTBSS

Reculer la bande de mt_count marques d’ensemble de fichiers.

MTCOMPRESSION

Valider la compression des données sur bande dans le lecteur si mt_count est non nul, désactiver la compression si mt_count est nul. Cette commande utilise la page MODE 15 supportée par la plupart des DAT.

MTEOM

Aller Ă  la fin des enregistrements (ajouter des fichiers).

MTERASE

Effacer la bande. Avec Linux 2.6, un effacement rapide (bande marquée vide) est effectué si le paramÚtre est zéro. Sinon, un effacement long (effacement complet) est effectué.

MTFSF

Avancer la bande de mt_count marques de fichier.

MTFSFM

Avancer la bande de mt_count filemarks. Positionner la bande du cÎté BOT de la derniÚre marque de fichier.

MTFSR

Avancer de mt_count enregistrements (blocs bande).

MTFSS

Avancer de mt_count marques d’ensemble de fichiers.

MTLOAD

ExĂ©cuter la commande de chargement SCSI. Un cas particulier est prĂ©vu pour certains chargeurs automatiques HP. Si mt_count correspond Ă  la somme de la constante MT_ST_HPLOADER_OFFSET et d’un nombre, ce dernier est envoyĂ© au pilote pour contrĂŽler le chargeur automatique.

MTLOCK

Verrouiller la porte du lecteur de bande.

MTMKPART

Formater la bande en une ou deux partitions. Si mt_count est positif, la taille de la partition 1 est renvoyĂ©e et la partition 2 correspond au reste de la bande. Si mt_count est nul, la bande est formatĂ©e en une seule partition. À partir de Linux 4.6, si mt_count est nĂ©gatif, la taille de la partition 0 est renvoyĂ©e et la partition 2 correspond au reste de la bande. Cette commande n’est autorisĂ©e que si la gestion du partitionnement est activĂ©e pour le lecteur (voir MT_ST_CAN_PARTITIONS plus bas).

MTNOP

Ne rien faire - Vider les tampons du pilote - À utiliser avant de lire l’état avec MTIOCGET .

MTOFFL

Rembobiner la bande et éteindre le lecteur.

MTRESET

Réinitialiser le lecteur.

MTRETEN

Retendre la bande.

MTREW

Rembobiner la bande.

MTSEEK

Rechercher sur la bande le bloc numĂ©ro mt_count . Cette opĂ©ration nĂ©cessite soit un contrĂŽleur SCSI-2 qui prend en charge la commande LOCATE (adresse spĂ©cifique au pĂ©riphĂ©rique), soit un lecteur SCSI-1 compatible Tandberg (Tandberg, Archive Viper, Wangtek, ... ). Le numĂ©ro de bloc devrait toujours ĂȘtre un numĂ©ro renvoyĂ© prĂ©cĂ©demment par MTIOCPOS si les adresses spĂ©cifiques au lecteur sont utilisĂ©es.

MTSETBLK

Définir la longueur de blocs du lecteur à la valeur spécifiée dans mt_count . Une longueur de bloc nulle place le lecteur dans le mode de blocs de tailles variables.

MTSETDENSITY

Définir la densité de la bande à celle codée dans mt_count . Les codes des densités acceptées par un lecteur sont disponibles dans la documentation de celui-ci.

MTSETPART

La partition active devient celle indiquĂ©e par mt_count . Les partitions sont numĂ©rotĂ©es depuis zĂ©ro. Cette commande n’est autorisĂ©e que si la gestion du partitionnement est activĂ©e pour le lecteur (voir MT_ST_CAN_PARTITIONS plus bas).

MTUNLOAD

ExĂ©cuter la commande de dĂ©chargement SCSI (n’éjecte pas la bande).

MTUNLOCK

Déverrouiller la porte du lecteur de bande.

MTWEOF

Écrire mt_count marques de fichiers.

MTWSM

Écrire mt_count marques d’ensemble de fichiers.

Fonctions de configuration du lecteur de bande magnétique (pour le superutilisateur) :
MTSETDRVBUFFER

DĂ©finir diverses options du pilote ou du lecteur en fonction des bits codĂ©s dans mt_count . Ces options concernent le type de tampon du lecteur, des options boolĂ©ennes du pilote, le seuil d’écriture du tampon, les valeurs par dĂ©faut des tailles de blocs et de densitĂ©, ainsi que les dĂ©lais de rĂ©ponse (seulement depuis Linux 2.1). Une fonction n’agit que sur un seul des Ă©lĂ©ments de la liste ci-dessous Ă  la fois (l’ensemble des boolĂ©ens constitue un Ă©lĂ©ment).

Une valeur ayant ses 4 bits de poids fort à 0 sera utilisée pour indiquer le type de tampon du lecteur. Les types de tampon sont :

0

Le contrĂŽleur ne renverra pas l’état BON en Ă©criture avant que les donnĂ©es ne soient rĂ©ellement Ă©crites sur le support.

1

Le contrĂŽleur peut renvoyer l’état BON en Ă©criture dĂšs que les donnĂ©es ont Ă©tĂ© transmises aux tampons internes du lecteur de bande.

2

Le contrĂŽleur peut renvoyer l’état BON en Ă©criture dĂšs que les donnĂ©es ont Ă©tĂ© transmises aux tampons internes du lecteur de bande, si toutes les Ă©critures prĂ©cĂ©dentes des tampons sur le support se sont dĂ©roulĂ©es correctement.

Pour contrĂŽler le seuil d’écriture, on doit inclure dans mt_count la constante MT_ST_WRITE_THRESHOLD associĂ©e avec le nombre de blocs dans les 28 bits de poids faible par un OU binaire « | ». Le nombre de blocs concerne des blocs de 1024 octets, et non pas la taille physique des blocs sur la bande. Le seuil ne peut pas excĂ©der la taille des tampons internes du contrĂŽleur (voir DESCRIPTION, plus bas).

Pour valider ou invalider les options boolĂ©ennes, la valeur mt_count doit inclure l’une des constantes MT_ST_BOOLEANS , MT_ST_SETBOOLEANS , MT_ST_CLEARBOOLEANS ou MT_ST_DEFBOOLEANS associĂ©es par un OU binaire avec une combinaison des options dĂ©crites ci-dessous. Avec MT_ST_BOOLEANS les options sont dĂ©finies avec les valeurs indiquĂ©es. Avec MT_ST_SETBOOLEANS les options sont activĂ©es sĂ©lectivement et inhibĂ©es avec MT_ST_DEFBOOLEANS .

Les options par défaut pour un contrÎleur de bande sont choisies avec MT_ST_DEFBOOLEANS . Un périphérique non actif (par exemple avec un numéro mineur de 32 ou 160) est activé lorsque les options par défaut sont définies pour la premiÚre fois. Un périphérique actif hérite des options non définies explicitement du périphérique actif au démarrage.

Les options booléennes sont :
MT_ST_BUFFER_WRITES
(Défaut : vrai)

Les opĂ©rations d’écriture en mode de bloc fixes sont mises en cache. Si cette option est invalidĂ©e, et si l’enregistreur utilise une longueur de bloc fixe, toutes les opĂ©rations d’écriture doivent se faire avec une longueur multiple de celle du bloc. Cette option doit ĂȘtre fausse pour crĂ©er des archives multivolumes fiables.

MT_ST_ASYNC_WRITES (Défaut : vrai)

Quand cette option est validĂ©e, les opĂ©rations d’écriture renvoient immĂ©diatement si les donnĂ©es tiennent dans le tampon du pilote, sans attendre que celles-ci soient effectivement transmises au lecteur de bande. Le seuil du tampon d’écriture dĂ©termine le taux de remplissage du tampon avant d’effectuer une commande SCSI. Toute erreur renvoyĂ©e par le pĂ©riphĂ©rique sera conservĂ©e jusqu’à l’opĂ©ration suivante. Cette option doit ĂȘtre fausse pour crĂ©er des archives multivolumes fiables.

MT_ST_READ_AHEAD (Défaut : vrai)

Cette option indique au pilote de fournir un cache en lecture, ainsi qu’une lecture anticipĂ©e des donnĂ©es en mode de blocs fixes. Si cette option est invalidĂ©e, et que le lecteur utilise une taille de blocs fixes, toutes les opĂ©rations de lecture doivent se faire avec une taille multiple de celle du bloc.

MT_ST_TWO_FM (Défaut : faux)

Cette option modifie le comportement du pilote quand un fichier est fermĂ©. L’attitude normale consiste Ă  Ă©crire une seule filemark, nĂ©anmoins si cette option est validĂ©e, le pilote Ă©crira deux filemarks et replacera la tĂȘte au-dessus de la seconde.

Note : cette option ne doit pas ĂȘtre utilisĂ©e avec les lecteurs de bandes QIC, car ils ne sont pas capables d’écraser une filemark. Ces lecteurs dĂ©tectent la fin des donnĂ©es enregistrĂ©es en cherchant de la bande vierge Ă  la place des deux filemarks consĂ©cutives habituelles. La plupart des autres lecteurs courants dĂ©tectent Ă©galement la prĂ©sence de bande vierge, aussi l’utilisation des deux filemarks n’est gĂ©nĂ©ralement utile que lors d’échange de bandes avec d’autres systĂšmes.

MT_ST_DEBUGGING (Défaut : faux)

Cette option valide les divers messages de débogage du pilote (si celui-ci a été compilé avec la constante DEBUG ayant une valeur non nulle).

MT_ST_FAST_EOM (Défaut : faux)

Cette option indique que les opĂ©rations MTEOM doivent ĂȘtre envoyĂ©es directement au lecteur, ce qui peut accĂ©lĂ©rer les opĂ©rations, mais aussi faire perdre au pilote le compte des pistes du fichier en cours, normalement renvoyĂ© par la requĂȘte MTIOCGET . Si MT_ST_FAST_EOM est fausse, le contrĂŽleur rĂ©pondra Ă  une requĂȘte MTEOM en sautant en avant de fichiers en fichiers.

MT_ST_AUTO_LOCK (Défaut : faux)

Lorsque cette option est vraie, la porte du lecteur est verrouillée lorsque le périphérique est ouvert, et déverrouillée lorsque le périphérique est refermé.

MT_ST_DEF_WRITES (Défaut : faux)

Les options de bande (taille de bloc, mode, compression...) peuvent varier lorsque l’on passe d’un pĂ©riphĂ©rique liĂ© Ă  un lecteur Ă  un autre pĂ©riphĂ©rique correspondant au mĂȘme lecteur. Cette option dĂ©finit si les changements sont fournis au pilote en utilisant les commandes SCSI, et si les capacitĂ©s d’auto-dĂ©tection du lecteur sont fiables. Si l’option est fausse, le pilote envoie les commandes SCSI immĂ©diatement lorsque le pĂ©riphĂ©rique change. Si cette option est vraie, les commandes SCSI ne sont pas envoyĂ©es avant une demande d’écriture. Dans ce cas, le microcode est habilitĂ© Ă  dĂ©tecter la structure de la bande lors de la lecture, et les commandes SCSI ne sont utilisĂ©es que pour ĂȘtre sĂ»rs que la bande est Ă©crite correctement.

MT_ST_CAN_BSR (Défaut : faux)

Lorsque la lecture anticipĂ©e est utilisĂ©e, la bande doit parfois ĂȘtre ramenĂ©e en arriĂšre en position correcte lors de la fermeture du pĂ©riphĂ©rique, et on utilise alors la commande SCSI pour sauter en arriĂšre par-dessus les enregistrements. Certains anciens lecteurs ne traitent pas correctement cette commande, et cette option permet d’en avertir le pilote. Le rĂ©sultat final est qu’une bande avec blocs fixes et lecture anticipĂ©e peut ĂȘtre mal positionnĂ©e dans un fichier lors de la fermeture du pĂ©riphĂ©rique. Avec Linux 2.6, l’option est activĂ©e par dĂ©faut pour les lecteurs qui gĂšrent la norme SCSI-3.

MT_ST_NO_BLKLIMS (Défaut : faux)

Certains lecteurs n’acceptent pas la commande SCSI READ BLOCK LIMITS de lecture des limites de blocs. Si l’on utilise cette option, le pilote n’invoque pas cette commande. L’inconvĂ©nient est que le pilote ne peut pas vĂ©rifier, avant d’envoyer des commandes, si la taille de bloc choisie est acceptĂ©e par le lecteur.

MT_ST_CAN_PARTITIONS (Défaut : faux)

Cette option active la prise en charge des partitions multiples sur une bande. Cette option s’applique Ă  tous les pĂ©riphĂ©riques liĂ©s au lecteur.

MT_ST_SCSI2LOGICAL (Défaut : faux)

Cette option indique au pilote d’utiliser les adresses de blocs logiques dĂ©finies dans le standard SCSI-2, lors d’opĂ©rations de positionnement et de lecture de la position (aussi bien lors des commandes MTSEEK et MTIOCPOS que lors des changements de partitions). Sinon, il utilise les adresses spĂ©cifiques au pĂ©riphĂ©rique. Il est trĂšs recommandĂ© d’activer cette option si le lecteur gĂšre les adresses logiques car elles contiennent Ă©galement les filemarks. Il existe d’ailleurs quelques lecteurs qui ne gĂšrent que les adresses logiques.

MT_ST_SYSV (Défaut : faux)

Lorsque cette option est activĂ©e, les pĂ©riphĂ©riques de bande utilisent les sĂ©mantiques System V. Dans le cas contraire, ils utilisent la sĂ©mantique BSD. La diffĂ©rence principale est le comportement lors de la fermeture d’un pĂ©riphĂ©rique en lecture. Avec System V, la bande est positionnĂ©e en avant Ă  la suite de la filemark suivante, si cela n’a pas dĂ©jĂ  eu lieu lors de la lecture. Dans la sĂ©mantique BSD, la position ne change pas.

MT_NO_WAIT (Défaut : faux)

Active le mode immĂ©diat (c’est-Ă -dire n’attend pas la fin de la commande) pour certaines commandes comme le rembobinage.

Un exemple :

struct mtop mt_cmd;
mt_cmd.mt_op = MTSETDRVBUFFER;
mt_cmd.mt_count = MT_ST_BOOLEANS |
MT_ST_BUFFER_WRITES | MT_ST_ASYNC_WRITES;
ioctl(fd, MTIOCTOP, mt_cmd);

La taille de bloc par dĂ©faut pour un pĂ©riphĂ©rique peut ĂȘtre configurĂ©e avec MT_ST_DEF_BLKSIZE et le code de densitĂ© par dĂ©faut avec MT_ST_DEFDENSITY . Les valeurs des paramĂštres sont associĂ©es par un OU logique avec le code opĂ©ratoire.

Avec Linux 2.1.x et ultĂ©rieurs, la valeur de dĂ©lai maximal peut ĂȘtre fournie avec la sous-commande MT_ST_SET_TIMEOUT associĂ©e par OU avec le dĂ©lai en seconde. Le dĂ©lai long (utilisĂ© pour les rembobinages ou les commandes pouvant durer longtemps) peut ĂȘtre configurĂ© avec MT_ST_SET_LONG_TIMEOUT . Les valeurs par dĂ©faut du noyau sont trĂšs longues afin de s’assurer qu’une commande valable n’est jamais interrompue pour dĂ©passement de dĂ©lai, et cela quel que soit le lecteur. À cause de cela, le pilote peut parfois sembler gelĂ© alors qu’il est en attente de dĂ©passement du dĂ©lai. Ces commandes permettent donc de dĂ©finir des valeurs plus rĂ©alistes pour un lecteur donnĂ©. Les dĂ©lais dĂ©finis pour un pĂ©riphĂ©rique s’appliquent Ă  tous les pĂ©riphĂ©riques liĂ©s au mĂȘme lecteur.

A partir de Linux 2.4.19 et de Linux 2.5.43, le pilote gĂšre un bit d’état qui indique si le lecteur demande un nettoyage. La mĂ©thode utilisĂ©e par le lecteur pour renvoyer l’information sur le nettoyage est dĂ©finie en utilisant la sous-commande MT_ST_SEL_CLN . Si la valeur est zĂ©ro, le bit du nettoyage vaut toujours zĂ©ro. Si la valeur est 1, la donnĂ©e TapeAlert dĂ©finie dans le standard SCSI-3 est utilisĂ©e (pas encore implĂ©mentĂ©). Les valeurs 2 à 17 sont rĂ©servĂ©es. Si les 8 bits de poids faible donnent une valeur supĂ©rieure à 18, les bits des donnĂ©es « extended sense » sont utilisĂ©s. Les bits 9 à 16 forment un masque pour sĂ©lectionner les bits Ă  observer et les bits 17 à 23 indiquent un motif de bits Ă  rechercher. Si le motif de bits est nul, un bit ou plus sous le masque indique la requĂȘte de nettoyage. Si le motif est non nul, le motif doit correspondre Ă  l’octet des donnĂ©es « sense » masquĂ©.

MTIOCGET — Obtenir l’état

Cette requĂȘte prend un paramĂštre du type (struct mtget *) .

/* Structure pour MTIOCGET - État de la bande magnĂ©tique */
struct mtget {
long mt_type;
long mt_resid;
/* Les registres suivants dépendent du matériel */
long mt_dsreg;
long mt_gstat;
long mt_erreg;
/* Ces deux derniers champs sont parfois inutilisés */
daddr_t mt_fileno;
daddr_t mt_blkno;
};

mt_type

Le fichier d’en-tĂȘte dĂ©finit plusieurs valeurs pour mt_type , mais le pilote actuel renvoie uniquement les types gĂ©nĂ©riques MT_ISSCSI1 (lecteur SCSI-1 gĂ©nĂ©rique) et MT_ISSCSI2 (lecteur SCSI-2 gĂ©nĂ©rique).

mt_resid

Contient le numéro de partition en cours.

mt_dsreg

Renvoie la configuration actuelle de la longueur de bloc (dans les 24 bits de poids faible) et la densité (dans les 8 bits de poids fort). Ces champs sont définis par MT_ST_BLKSIZE_SHIFT , MT_ST_BLKSIZE_MASK , MT_ST_DENSITY_SHIFT et MT_ST_DENSITY_MASK .

mt_gstat

Renvoie des informations gĂ©nĂ©riques d’état (indĂ©pendantes du pĂ©riphĂ©rique). Le fichier d’en-tĂȘte dĂ©finit les macros suivantes pour tester les bits d’état :
GMT_EOF
( x )

La bande est positionnée juste aprÚs une filemark (toujours faux aprÚs une opération MTSEEK ).

GMT_BOT ( x )

La bande est positionnée juste au début du premier fichier (toujours faux aprÚs une opération MTSEEK ).

GMT_EOT ( x )

Une opération a atteint la fin physique de la bande (End Of Tape).

GMT_SM ( x )

La bande est positionnée sur une setmark (toujours faux aprÚs une opération MTSEEK ).

GMT_EOD ( x )

La bande est positionnée à la fin des données enregistrées.

GMT_WR_PROT ( x )

La bande est protĂ©gĂ©e en Ă©criture. Pour certains enregistreurs, cela signifie qu’ils prennent pas en charge l’écriture sur ce type de bande.

GMT_ONLINE ( x )

La derniĂšre opĂ©ration open (2) a trouvĂ© le lecteur prĂȘt Ă  agir, avec une bande Ă  l’intĂ©rieur.

GMT_D_6250 ( x )
GMT_D_1600
( x )
GMT_D_800
( x )

Ces informations “gĂ©nĂ©riques” d’état renvoient la densitĂ© actuelle des lecteurs de bandes 9-pistes œ" seulement.

GMT_DR_OPEN ( x )

Le lecteur ne contient pas de bande.

GMT_IM_REP_EN ( x )

GMT_IM_REP_EN ( x ) : Mode de rapport immĂ©diat. Ce bit est activĂ© lorsqu’il n’y a aucune assurance que les donnĂ©es aient Ă©tĂ© physiquement Ă©crites sur la bande lors du retour de l’appel systĂšme. Le bit est Ă  zĂ©ro seulement lorsque le lecteur ne cache pas les donnĂ©es et que le pilote est configurĂ© pour ne pas faire de cache non plus.

GMT_CLN ( x )

Le lecteur a demandé un nettoyage. Implémenté depuis Linux 2.4.19 et Linux 2.5.43.

mt_erreg

Le seul champ dĂ©fini dans mt_erreg est le nombre d’erreurs corrigĂ©es, dans les 16 bits de poids faible (comme dĂ©fini par les masques MT_ST_SOFTERR_SHIFT et MT_ST_SOFTERR_MASK ). À cause d’incompatibilitĂ©s dans les mĂ©thodes utilisĂ©es par les lecteurs pour rendre compte des corrections d’erreur, cette valeur n’est pas toujours fournie (la plupart des lecteurs ne renvoient pas, par dĂ©faut, les erreurs transitoires, mais cela peut ĂȘtre modifiĂ© avec la commande SCSI MODE SELECT).

mt_fileno

Renvoie le numéro du fichier en cours (commençant à 0). La valeur est mise à -1 si le numéro du fichier est inconnu (par exemple, aprÚs un MTBSS ou un MTSEEK ).

mt_blkno

Renvoie le numĂ©ro de bloc (commençant à 0) Ă  l’intĂ©rieur du fichier en cours. Cette valeur est mise Ă  -1 quand le numĂ©ro de bloc est inconnu (par exemple, aprĂšs un MTBSF , un MTBSS ou un MTSEEK ).

MTIOCPOS — Obtenir la position de la bande

Cette requĂȘte prend un paramĂštre du type (struct mtpos *) et renvoie une valeur spĂ©cifique au lecteur, correspondant au numĂ©ro de bloc en cours, et qui n’est pas la mĂȘme que mt_blkno renvoyĂ©e par MTIOCGET . Ce lecteur doit ĂȘtre un modĂšle SCSI-2 qui gĂšre la commande READ POSITION ou un lecteur SCSI-1 compatible Tandberg (Tandberg, Archive Viper, Wangtek, ...).

/* Structure pour MTIOCPOS - Commande pour obtenir la position */
struct mtpos {
long mt_blkno; /* numéro du bloc actuel */
};

VALEUR RENVOYÉE

EACCES

Tentative d’écriture ou d’effacement sur une bande protĂ©gĂ©e en Ă©criture. (Cette erreur ne peut pas ĂȘtre dĂ©tectĂ©e lors de open (2).)

EBUSY

Le pĂ©riphĂ©rique est dĂ©jĂ  utilisĂ© ou le pilote n’a pas assez de mĂ©moire.

EFAULT

Le paramÚtre de commande pointe en dehors de la mémoire adressable par le processus appelant.

EINVAL

Un appel systÚme ioctl (2) avait un paramÚtre non valable ou la taille de bloc demandée était incorrecte.

EIO

L’opĂ©ration demandĂ©e a Ă©chouĂ©.

ENOMEM

Le nombre d’octets lus par read (2) est plus petit que le prochain bloc physique sur la bande (avant Linux 2.2.18 et Linux 2.4.0 les octets supplĂ©mentaires Ă©taient silencieusement ignorĂ©s).

ENOSPC

Une écriture a échoué, car la fin de bande a été atteinte.

ENOSYS

Appel systĂšme ioctl (2) inconnu.

ENXIO

Durant l’ouverture, le lecteur de bande n’existe pas.

EOVERFLOW

Tentative de lire ou d’écrire un bloc de longueur variable plus grand que la taille des tampons internes du contrĂŽleur.

EROFS

On tente l’ouverture avec O_WRONLY ou O_RDWR alors que la bande est protĂ©gĂ©e en Ă©criture.

FICHIERS

/dev/st*

Les lecteurs de bandes SCSI Ă  rembobinage automatique

/dev/nst*

Les lecteurs de bandes SCSI sans rembobinage automatique

NOTES

-

Lors d’un Ă©change de donnĂ©es entre systĂšmes diffĂ©rents, il faut se mettre d’accord sur la taille des blocs. Les paramĂštres d’un lecteur aprĂšs le dĂ©marrage sont souvent diffĂ©rents de ceux qu’utilisent la plupart des autres systĂšmes d’exploitation. La plupart utilisent un mode de blocs de longueur variable si le lecteur le permet. Cela concerne la plupart des lecteurs modernes, y compris les DAT, les lecteurs 8mm hĂ©licoĂŻdaux, les DLTs, etc. Il peut ĂȘtre judicieux d’utiliser ces lecteurs en mode de longueur variable sous Linux aussi (en utilisant MTSETBLK ou MTSETDEFBLK au dĂ©marrage), du moins lors de l’échange de donnĂ©es avec des systĂšmes d’exploitation diffĂ©rents. L’inconvĂ©nient de cela est qu’il faut utiliser une taille de bloc assez grande pour obtenir des taux de transfert acceptables sur un bus SCSI.

-

Beaucoup de programmes (comme par exemple tar (1)) permettent Ă  l’utilisateur de spĂ©cifier le facteur de bloc sur la ligne de commande. Notez que cela dĂ©termine la taille de bloc physique uniquement en mode de bloc de taille variable.

-

Pour utiliser les lecteurs de bandes SCSI, le pilote SCSI de base, un pilote d’adaptateur SCSI et le pilote du lecteur SCSI doivent tous ĂȘtre configurĂ©s dans le noyau ou chargĂ©s comme modules. Si le pilote des bandes SCSI n’est pas prĂ©sent, le lecteur est reconnu, mais la gestion de bande dĂ©crite dans cette page n’est pas disponible.

-

Le pilote Ă©crit les messages d’erreur sur la console et/ou les fichiers de journalisation (log). Les codes SENSE prĂ©sents dans certains messages sont automatiquement traduits en texte si les messages SCSI complets sont activĂ©s dans la configuration du noyau.

-

L’utilisation du tampon interne permet de bons dĂ©bits en mode blocs fixes mĂȘme avec peu d’octets lus (avec read (2)) ou Ă©crits (avec write (2)). Avec les transferts directs, cela n’est pas possible et peut provoquer une surprise lors de la mise Ă  jour vers le noyau 2.6. La solution est de demander au logiciel d’utiliser des transferts plus importants (souvent en lui indiquant d’utiliser de plus gros blocs). Si ce n’est pas possible, les transferts directs peuvent ĂȘtre dĂ©sactivĂ©s.

VOIR AUSSI

mt (1)

Le fichier drivers/scsi/README.st ou Documentation/scsi/st.txt (pour les noyaux >= 2.6) dans les sources du noyau Linux contient les informations les plus récentes à propos du pilote et de ses capacités de configuration

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier <cedric.boutillier@gmail.com>, Frédéric Hantrais <fhantrais@gmail.com> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .