Provided by:
manpages-fr_3.32d0.2p4-1_all 
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 peripherique st fournit une interface vers un grand nombre
de lecteurs de bandes SCSI. Actuellement, ce pilote prend le controle
de tous les peripheriques detectes de type << acces sequentiel >>. Le
pilote st utilise un numero majeur valant 9.
Chaque peripherique utilise huit numeros mineurs. Les 5 bits de poids
faible des numeros mineurs sont assignes sequentiellement dans l'ordre
de detection. Avec le noyau 2.6, les bits au-dela des 8 bits de poids
faible sont concatenes aux 5 bits de poids faible pour former le numero
de lecteur de bande. Les numeros mineurs peuvent etre groupes en deux
ensembles de quatre numeros : les numeros mineurs principaux des
peripheriques (avec rembobinage automatique), n, et les numeros mineurs
des peripheriques sans rembobinage automatique (n+ 128). Les
peripheriques ouverts avec le numero principal recevront une commande
REWIND a la fermeture. Les peripheriques ouverts avec le numero
<< no-rewind >> ne la recevront pas. (Notez qu'essayer de positionner
la bande d'un peripherique avec rembobinage automatique en utilisant
par exemple mt, ne produit pas le resultat desire : la bande est a
nouveau rembobinee apres l'utilisation de la commande mt et la commande
suivante prend effet des le debut de la bande.
Au sein de chaque groupe, 4 numeros mineurs sont disponibles pour
definir des peripheriques avec des caracteristiques differentes (taille
de bloc, compression, densite, etc.). Lorsque le systeme demarre, seul
le premier peripherique est disponible. Les 3 autres sont actives
lorsque les caracteristiques par defaut sont definies (voir plus bas).
(En modifiant les constantes a la compilation, on peut modifier la
repartition entre le nombre maximal de lecteurs de bandes et le nombre
de numeros mineurs par lecteur. Les allocations par defaut permettent
de controler 32 lecteurs de bandes. Par exemple, il est possible de
controler jusqu'a 64 lecteurs avec deux numeros mineurs pour les
options differentes.)
Les fichiers speciaux sont crees 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 peripheriques blocs correspondants.
Le pilote utilise une memoire tampon interne qui doit etre assez grande
pour contenir au moins un bloc de donnees de la bande. Dans les noyaux
avant le 2.1.121, le tampon etait alloue sous forme de bloc continu.
Cela limitait 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 256 Ko pour les 64 bits. Dans les noyaux plus
recents, le pilote alloue la memoire tampon en plusieurs parties
disjointes si necessaire. Par defaut, le nombre maximal de parties est
16. Ceci signifie que la taille maximale de bloc est tres grande (2 Mo
si l'allocation de 16 blocs de 128 Ko reussit).
La taille de la memoire tampon interne est determinee par une constante
a la compilation du noyau, que l'on peut supplanter par une option au
demarrage du systeme. De plus, le pilote essaie d'allouer un tampon
temporaire plus grand lors de son execution si cela s'avere necessaire.
Toutefois l'allocation a l'execution de grands blocs contigus peut
echouer, et il vaut mieux ne pas compter dessus avec les noyaux
anterieurs au 2.1.121 (cela s'applique egalement au chargement de
module a la demande avec kerneld ou kmod).
Le pilote ne gere pas specifiquement un type ou une marque de lecteur
de bandes. Apres le demarrage du systeme, les options du peripherique
sont definies par le microcode du peripherique. Par exemple, si
celui-ci reclame un mode de blocs fixes, le lecteur de bandes utilisera
ce mode. Les options peuvent etre modifiees par des appels ioctl(2)
explicites et restent effectives lorsque le peripherique est ferme puis
reouvert. La configuration des options affecte aussi bien les
peripheriques avec rembobinage automatique que ceux sans.
Des options differentes peuvent etre fournies pour differents
peripheriques au sein du sous-groupe de quatre. Les options prennent
effet a l'ouverture du peripherique. Par exemple, l'administrateur peut
definir un peripherique qui ecrit des blocs fixes d'une certaine
taille, et un qui ecrit avec des blocs de longueur variable (si le
peripherique accepte les deux modes).
Le pilote gere les partitions de bandes si elles sont acceptees par le
lecteur. (Notez que les partitions de bande n'ont rien a voir avec les
partitions de disques. Une bande partitionnee peut etre vue comme un
ensemble de bandes logiques dans le meme support). La gestion des
partitions doit etre active par un ioctl(2). L'emplacement de la bande
est sauvegarde au sein de chaque partition au cours des changements de
partitions. La partition utilisee pour les operations ulterieures est
selectionnee avec un ioctl(2). Le changement de partition est effectue
au moment de la suivante operation bande afin d'eviter les mouvements
inutiles de la bande. Le nombre maximal de partitions sur une bande est
defini par une constante a la compilation (4 par defaut). Le pilote
contient un ioctl(2) qui peut formater une bande avec une ou deux
partitions.
Le fichier special de peripherique /dev/tape est generalement un lien
symbolique ou un materiel vers le lecteur de bandes par defaut.
Depuis le noyau 2.6.2, le pilote exporte dans le repertoire de sysfs
/sys/class/scsi_tape les peripheriques attaches et certains de leurs
parametres.
Transfert de donn'ees
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 accepte
par le lecteur). En mode de blocs fixes, le peripherique ecrit les
blocs de la taille indiquee et la taille des blocs ne depend pas de la
quantite de donnees transmises lors de l'appel systeme. Dans le mode de
longueur variable, un bloc de donnees est ecrit a chaque appel systeme
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'ecriture utilise : la
seule chose importante est d'utiliser lors de la lecture une commande
qui accepte la taille des blocs de la bande.
En mode variable, le nombre d'octets a lire n'a pas besoin de
correspondre exactement a la taille du bloc de la bande. Si le nombre
demande est plus grand que la taille du bloc suivant sur la bande,
l'appel systeme renverra la quantite de donnees effectivement lues. Si
la taille de bloc est plus grande que le nombre demande, l'appel
systeme renverra les donnees demandees et le reste du bloc est
abandonne.
En mode fixe, le nombre d'octets demande peut etre arbitraire, si la
memoire tampon est activee, ou un multiple de la taille de bloc, si ce
tampon est desactive. Les noyaux anterieurs au 2.1.121 permettent
l'ecriture avec un nombre quelconque si les memoires tampons sont
activees. Dans tous les autres cas (les noyaux anterieurs au 2.1.121
sans memoire tampon ou les noyaux plus recents), le nombre d'octets a
ecrire doit etre un multiple de la taille des blocs.
Dans le noyau 2.6, le pilote essaie de transferer les donnees
directement entre la memoire tampon de l'utilisateur et le
peripherique. Si cela n'est pas possible, la memoire tapon interne au
pilote de peripherique est utilisee. Les raisons de ne pas utiliser des
transferts directs sont entre autres un mauvais alignement de la
memoire tampon de l'utilisateur (par defaut 512 octets mais cela peut
etre change par le pilote HBA), l'adaptateur SCSI ne peut pas atteindre
un ou plusieurs blocs de la memoire tampon de l'utilisateur, etc.
Une marque << filemark >> est automatiquement ecrit sur la bande si la
derniere operation avant fermeture etait une ecriture.
En lecture, une marque << filemark >> provoque les evenements
suivants : s'il reste des donnees dans le tampon lorsqu'on trouve la
marque, les donnees en memoire sont renvoyees ; la lecture suivante
renvoie zero octet ; la lecture suivante renvoie les donnees du fichier
suivant ; la fin des donnees enregistrees est signalee par un retour de
zero octet pour deux appels successifs en lecture. Enfin, le troisieme
appel renvoie une erreur.
Ioctls
Le pilote gere trois requetes ioctl(2). Les requetes non reconnues par
st sont transmises au controleur SCSI. Les definitions ci-dessous sont
extraites de /usr/include/linux/mtio.h :
MTIOCTOP - Effectue une op'eration sur la bande
Cette requete prend un parametre de type (struct mtop *). Certains
controleurs ne gerent pas toutes les operations. Le pilote renvoie une
erreur EIO si le peripherique n'accepte pas l'operation.
/* Structure MTIOCTOP - pour les operations sur bande : */
struct mtop {
short mt_op; /* operations definies ci-dessous */
int mt_count; /* nombre d'operations */
};
Operations sur bande magnetique lors d'une utilisation normale :
MTBSF Reculer la bande de mt_count filemarks.
MTBSFM Reculer la bande de mt_count filemarks. Repositionner la
bande sur le cote EOT de la derniere marque.
MTBSR Reculer la bande de mt_count enregistrements (blocs
bande).
MTBSS Reculer la bande de mt_count setmarks.
MTCOMPRESSION Valider la compression des donnees sur bande dans le
lecteur si mt_count est non nul, desactiver la
compression si mt_count est nul. Cette commande utilise
la page MODE 15 supportee par la plupart des DAT.
MTEOM Aller a la fin des enregistrements (ajouter des
fichiers).
MTERASE Efface la bande. Avec un noyau 2.6, un effacement rapide
(bande marquee vide) est effectue si le parametre est
zero. Sinon, un effacement long (effacement complet) est
effectue.
MTFSF Avancer la bande de mt_count filemarks.
MTFSFM Avancer la bande de mt_count filemarks. Positionner la
bande du cote BOT de la derniere marque.
MTFSR Avancer de mt_count enregistrements (blocs bande).
MTFSS Avancer de mt_count setmarks.
MTLOAD Executer la commande de chargement SCSI. Un cas
particulier est prevu pour certains chargeurs
automatiques HP. Si mt_count correspond a la somme de la
constante MT_ST_HPLOADER_OFFSET et d'un nombre, ce
dernier est envoye au pilote pour controler le chargeur
automatique.
MTLOCK Verrouiller la porte du lecteur de bande.
MTMKPART Formater la bande en une ou deux partitions. Si mt_count
n'est pas nul, il correspond a la taille de la premiere
partition, et la seconde partition correspond au reste de
la bande. Si mt_count est nul, la bande n'est formatee
qu'en une seule partition. Cette commande n'est autorisee
que si le support de partitionnement est active pour le
lecteur (voir MT_ST_CAN_PARTITIONS plus bas).
MTNOP Ne rien faire - Vider les tampons du pilote - A utiliser
avant de lire l'etat avec MTIOCGET.
MTOFFL Rembobiner la bande et eteindre le lecteur.
MTRESET Reinitialiser le lecteur.
MTRETEN Retendre la bande.
MTREW Rembobiner la bande.
MTSEEK Rechercher sur la bande le bloc numero mt_count. Cette
operation necessite soit un controleur SCSI-2 qui
supporte la commande LOCATE (adresse specifique au
peripherique), soit un lecteur SCSI-1 compatible Tandberg
(Tandberg, Archive Viper, Wangtek, ... ). Le numero de
bloc devrait toujours etre un numero renvoye precedemment
par MTIOCPOS si les adresses specifiques au lecteur sont
utilisees.
MTSETBLK Definit la longueur de blocs du lecteur a la valeur
specifiee dans mt_count. Une longueur de bloc nulle place
le lecteur dans le mode de blocs de tailles variables.
MTSETDENSITY Definit la densite de la bande a celle codee dans
mt_count. Les codes des densites acceptees par un lecteur
sont disponibles dans la documentation de celui-ci.
MTSETPART La partition active devient celle indiquee par mt_count.
Les partitions sont numerotees depuis zero. Cette
commande n'est autorisee que si la gestion du
partitionnement est activee pour le lecteur (voir
MT_ST_CAN_PARTITIONS plus bas).
MTUNLOAD Executer la commande de dechargement SCSI (n'ejecte pas
la bande).
MTUNLOCK Deverrouiller la porte du lecteur de bande.
MTWEOF Ecrire mt_count filemarks.
MTWSM Ecrire mt_count setmarks.
Fonctions de configuration du lecteur de bande magnetique (pour le
superutilisateur) :
MTSETDRVBUFFER
Definit diverses options du pilote ou du lecteur en fonction
des bits codes dans mt_count. Ces options concernent le type de
tampon du lecteur, des options booleennes du pilote, le seuil
d'ecriture du tampon, les valeurs par defaut des tailles de
blocs et de densite, ainsi que les delais de reponse (pour les
noyaux 2.1 et ulterieurs). Une fonction n'agit que sur un seul
des elements de la liste ci-dessus a la fois (l'ensemble des
booleens constitue un element).
Une valeur ayant ses 4 bits de poids forts a 0 sera utilisee
pour indiquer le type de tampon du lecteur. Les types de tampon
sont :
0 Le controleur ne renverra pas l'etat BON en ecriture
avant que les donnees ne soient reellement ecrites sur
le support.
1 Le controleur peut renvoyer l'etat BON en ecriture des
que les donnees ont ete transmises aux tampons internes
du lecteur de bande.
2 Le controleur peut renvoyer l'etat BON en ecriture des
que les donnees ont ete transmises aux tampons internes
du lecteur de bande, si toutes les ecritures
precedentes des tampons sur le support se sont
deroulees correctement.
Pour controler le seuil d'ecriture, on doit inclure dans
mt_count la constante MT_ST_WRITE_THRESHOLD associee avec le
nombre de blocs dans les 28 bits de poids faibles 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 exceder la taille des tampons internes du
controleur. (voir DESCRIPTION, plus bas).
Pour valider ou invalider les options booleennes, la valeur
mt_count doit inclure l'une des constantes MT_ST_BOOLEANS,
MT_ST_SETBOOLEANS, MT_ST_CLEARBOOLEANS ou MT_ST_DEFBOOLEANS
associees par un OU binaire avec une combinaison des options
decrites ci-dessous. Avec MT_ST_BOOLEANS les options sont
definies avec les valeurs indiquees. Avec MT_ST_SETBOOLEANS les
options sont activees selectivement et inhibees avec
MT_ST_DEFBOOLEANS.
Les options par defaut pour un controleur de bande sont
choisies avec MT_ST_DEFBOOLEANS. Un peripherique non actif (par
exemple avec un numero mineur de 32 ou 160) est active lorsque
les options par defaut sont definies pour la premiere fois. Un
peripherique actif herite des options non fixees explicitement
du peripherique actif au demarrage.
Les options booleennes sont :
MT_ST_BUFFER_WRITES (Defaut : vrai)
Les operations d'ecriture en mode de bloc fixes sont
mises en cache. Si cette option est invalidee, et si
l'enregistreur utilise une longueur de bloc fixe, toutes
les operations d'ecriture doivent se faire avec une
longueur multiple de celle du bloc. Cette option doit
etre fausse pour creer des archives multivolumes
fiables.
MT_ST_ASYNC_WRITES (Defaut : vrai)
Quand cette option est validee, les
operations d'ecriture retournent
immediatement si les donnees tiennent
dans le tampon du pilote, sans attendre
que celles-ci soient effectivement
transmises au lecteur de bande. Le seuil
du tampon d'ecriture determine le taux de
remplissage du tampon avant d'effectuer
une commande SCSI. Toute erreur renvoyee
par le peripherique sera conservee
jusqu'a l'operation suivante. Cette
option doit etre fausse pour creer des
archives multivolumes fiables.
MT_ST_READ_AHEAD (Defaut : vrai)
Cette option indique au pilote de fournir
un cache en lecture, ainsi qu'une lecture
anticipee des donnees en mode de blocs
fixes. Si cette option est invalidee, et
que le lecteur utilise une taille de
blocs fixe, toutes les operations de
lecture doivent se faire avec une taille
multiple de celle du bloc.
MT_ST_TWO_FM (Defaut : faux)
Cette option modifie le comportement du
pilote quand un fichier est ferme.
L'attitude normale consiste a ecrire une
seule filemark, neanmoins si cette option
est validee, le pilote ecrira deux
filemarks et replacera la tete au-dessus
de la seconde.
Note : Cette option ne doit pas etre
utilisee avec les lecteurs de bandes QIC
car ils ne sont pas capables d'ecraser
une filemark. Ces lecteurs detectent la
fin des donnees enregistrees en cherchant
de la bande vierge a la place des deux
filemarks consecutives habituelles. La
plupart des autres lecteurs courants
detectent egalement la presence de bande
vierge, aussi l'utilisation des deux
filemarks n'est generalement utile que
lors d'echange de bandes avec d'autres
systemes.
MT_ST_DEBUGGING (Defaut : faux)
Cette option valide les divers messages
de debogage du pilote, si celui-ci a ete
compile avec la constante DEBUG ayant une
valeur non nulle).
MT_ST_FAST_EOM (Defaut : faux)
Cette option indique que les operations
MTEOM doivent etre envoyees directement
au lecteur, ce qui peut accelerer les
operations, mais aussi faire perdre au
pilote le compte des pistes du fichier en
cours, normalement renvoye par la requete
MTIOCGET. Si MT_ST_FAST_EOM est fausse,
le controleur repondra a une requete
MTEOM en sautant en avant de fichiers en
fichiers.
MT_ST_AUTO_LOCK (Defaut : faux)
Lorsque cette option est vraie, la porte
du lecteur est verrouillee lorsque le
fichier peripherique est ouvert, et
deverrouillee lorsque le peripherique est
referme.
MT_ST_DEF_WRITES (Defaut : faux)
Les options de bande (taille de bloc,
mode, compression...) peuvent varier
lorsque l'on passe d'un peripherique lie
a un lecteur a un autre peripherique
correspondant au meme lecteur. Cette
option definit si les changements sont
fournis au pilote en utilisant les
commandes SCSI, et si les capacites
d'auto-detection du lecteur sont fiables.
Si l'option est fausse, le pilote envoie
les commandes SCSI immediatement lorsque
le peripherique change. Si cette option
est vraie, les commandes SCSI ne sont pas
envoyees avant une demande d'ecriture.
Dans ce cas, le micro-code est habilite a
detecter la structure de la bande lors de
la lecture, et les commandes SCSI ne sont
utilisees que pour etre surs que la bande
est ecrite correctement.
MT_ST_CAN_BSR (Defaut : faux)
Lorsque la lecture anticipee est
utilisee, la bande doit parfois etre
ramenee en arriere en position correcte
lors de la fermeture du peripherique, et
on utilise alors la commande SCSI pour
sauter en arriere par-dessus les
enregistrements. Certains anciens
lecteurs ne traitent pas correctement
cette commande, et cette option permet
d'en avertir le pilote. Le resultat final
est qu'une bande avec blocs fixes et
lecture anticipee peut etre mal
positionnee dans un fichier lors de la
fermeture du peripherique. Avec un
noyau 2.6, l'option est activee par
defaut pour les lecteurs qui gerent la
norme SCSI-3.
MT_ST_NO_BLKLIMS (Defaut : 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'inconvenient est
que le pilote ne peut pas verifier, avant
d'envoyer des commandes, si la taille de
bloc choisie est acceptee par le lecteur.
MT_ST_CAN_PARTITIONS (Defaut : faux)
Cette option active le support des
partitions multiples sur une bande. Cette
option s'applique a tous les
peripheriques lies au lecteur.
MT_ST_SCSI2LOGICAL (Defaut : faux)
Cette option indique au pilote d'utiliser
les adresses de blocs logiques definies
dans le standard SCSI-2, lors
d'operations 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 specifiques au
peripherique. Il est tres recommande
d'activer cette option si le lecteur
supporte les adresses logiques car elles
contiennent egalement les filemarks. Il
existe d'ailleurs quelques lecteurs qui
ne supportent que les adresses logiques.
MT_ST_SYSV (Defaut : faux)
Lorsque cette option est activee, les
peripheriques de bande utilisent les
semantiques System V. Dans le cas
contraire, ils utilisent la semantique
BSD. La difference principale est le
comportement lors de la fermeture d'un
peripherique en lecture. Avec System V,
la bande est positionnee en avant a la
suite de la filemark suivante si cela n'a
pas deja eu lieu lors de la lecture. Dans
la semantique BSD, la position ne change
pas.
MT_NO_WAIT (Defaut : faux)
Active le mode immediat (i.e. 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 defaut pour un
peripherique peut etre configuree avec
MT_ST_DEF_BLKSIZE et le code de densite par
defaut avec MT_ST_DEFDENSITY. Les valeurs des
parametres sont associees par un OU logique avec
le code operatoire.
Avec les noyaux 2.1.x et ulterieurs, la valeur
de delai maximum peut etre fournie avec la
sous-commande MT_ST_SET_TIMEOUT associee par OU
avec le delai en seconde. Le delai long (utilise
pour les rembobinages ou les commandes pouvant
durer longtemps) peut etre configure avec
MT_ST_SET_LONG_TIMEOUT. Les valeurs par defaut
du noyau sont tres longues afin de s'assurer
qu'une commande valide n'est jamais interrompue
pour depassement de delai, et ceci quel que soit
le lecteur. A cause de cela, le pilote peut
parfois sembler gele alors qu'il est en attente
de depassement de delai. Ces commandes
permettent donc de fixer des valeurs plus
pratiques pour un lecteur donne. Les delais
fixes pour un peripherique s'appliquent a tous
les peripheriques lies au meme lecteur.
A partir des noyaux 2.4.19 et 2.5.43, le pilote
gere un bit d'etat qui indique si le lecteur
demande un nettoyage. La methode utilisee par le
lecteur pour renvoyer l'information sur le
nettoyage est fixee en utilisant la
sous-commande MT_ST_SEL_CLN. Si la valeur est
zero, le bit du nettoyage vaut toujours zero. Si
la valeur est 1, la donnee TapeAlert definie
dans le standard SCSI-3 est utilisee (pas encore
implemente). Les valeurs 2 a 17 sont reservees.
Si les 8 bits de poids faible donnent une valeur
superieure a 18, les bits des donnees
<< extended sense >> sont utilises. Les bits 9 a
16 forment un masque pour selectionner les bits
a observer et les bits 17 a 23 indiquent un
motif de bits a rechercher. Si le motif de bits
est nul, un bit ou plus sous le masque indique
la requete de nettoyage. Si le motif est non
nul, le motif doit correspondre a l'octet des
donnees << sense >> masque.
MTIOCGET -- Obtenir l''etat
Cette requete prend un parametre du type (struct mtget
*).
/* Structure pour MTIOCGET - Etat de la bande magnetique */
struct mtget {
long mt_type;
long mt_resid;
/* Les registres suivants dependent du materiel */
long mt_dsreg;
long mt_gstat;
long mt_erreg;
/* Ces deux derniers champs sont parfois inutilises */
daddr_t mt_fileno;
daddr_t mt_blkno;
};
mt_type Le fichier d'en-tete definit plusieurs
valeurs pour mt_type, mais le pilote actuel
renvoie uniquement les types generiques
MT_ISSCSI1 (lecteur SCSI-1 generique) et
MT_ISSCSI2 (lecteur SCSI-2 generique).
mt_resid Contient le numero de partition courante.
mt_dsreg Renvoie la configuration actuelle de la
longueur de bloc (dans les 24 bits de poids
faibles) et la densite (dans les 8 bits de
poids forts). Ces champs sont definis par
MT_ST_BLKSIZE_SHIFT, MT_ST_BLKSIZE_MASK,
MT_ST_DENSITY_SHIFT, et MT_ST_DENSITY_MASK.
mt_gstat Renvoie des informations generiques de statut
(independants du peripherique). Le fichier
d'en-tete definit les macros suivantes pour
tester les bits de statut :
GMT_EOF(x) : La bande est positionnee juste
apres une filemark (toujours faux apres
une operation MTSEEK).
GMT_BOT(x) : La bande est positionnee juste
au debut du premier fichier (toujours
faux apres une operation MTSEEK).
GMT_EOT(x) : Une operation a atteint la fin
physique de la bande (End Of Tape).
GMT_SM(x) : La bande est positionnee sur une
setmark (toujours faux apres une
operation MTSEEK).
GMT_EOD(x) : La bande est positionnee a la
fin des donnees enregistrees.
GMT_WR_PROT(x) : La bande est protegee en
ecriture. Pour certains enregistreurs,
ceci signifie qu'ils ne supportent pas
l'ecriture sur ce type de bande.
GMT_ONLINE(x) : La derniere operation open(2)
a trouve le lecteur pret a agir, avec une
bande a l'interieur.
GMT_D_6250(x), GMT_D_1600(x), GMT_D_800(x) :
Ces informations "generiques" de statut
renvoient la densite actuelle des
lecteurs de bandes 9-pistes 1/2"
seulement.
GMT_DR_OPEN(x) : Le lecteur ne contient pas
de bande.
GMT_IM_REP_EN(x) : Mode de rapport immediat.
Ce bit est active lorsqu'il n'y a aucune
assurance que les donnees aient ete
physiquement ecrites sur la bande lors du
retour de l'appel systeme. Le bit est a
zero seulement lorsque le lecteur ne
cache pas les donnees et que le pilote
est configure pour ne pas faire de cache
non plus.
GMT_CLN(x) : Le lecteur a demande un
nettoyage. Implemente depuis les noyaux
2.4.19 et 2.5.43.
mt_erreg Le seul champ defini dans mt_erreg est le
nombre d'erreurs corrigees, dans les 16 bits
de poids faibles (comme defini par les
masques MT_ST_SOFTERR_SHIFT et
MT_ST_SOFTERR_MASK). A cause
d'incompatibilites dans les methodes
utilisees 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 defaut, les erreurs
corrigees, mais cela peut etre modifie avec
la commande SCSI MODE SELECT).
mt_fileno Renvoie le numero du fichier en cours
(commencant a 0). La valeur est mise a -1 si
le numero du fichier est inconnu (par
exemple, apres un MTBSS ou un MTSEEK).
mt_blkno Renvoie le numero de bloc (commencant a 0) a
l'interieur du fichier en cours. Cette valeur
est mise a -1 quand le numero de bloc est
inconnu (par exemple, apres un MTBSF, un
MTBSS, ou un MTSEEK).
MTIOCPOS -- Obtenir la position de la bande
Cette requete prend un parametre du type (struct mtpos
*) et renvoie une valeur specifique au lecteur,
correspondant au numero de bloc en cours, et qui n'est
pas la meme que mt_blkno renvoyee par MTIOCGET. Ce
lecteur doit etre un modele SCSI-2 qui supporte 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; /* numero du bloc courant */
};
VALEUR RENVOY'EE
EACCES Tentative d'ecriture ou
d'effacement sur une bande protegee
en ecriture. (Cette erreur ne peut
pas etre detectee lors de open(2).)
EBUSY Le peripherique est deja utilise ou
le pilote n'a pas assez de memoire.
EFAULT Le parametre de commande pointe en
dehors de la memoire adressable par
le processus appelant.
EINVAL Un appel systeme ioctl(2) avait un
parametre non valable ou la taille
de bloc demandee etait incorrecte.
EIO L'operation demandee a echoue.
ENOMEM Le nombre d'octet lu par read(2)
est plus petit que le prochain bloc
physique sur la bande. (Avant
2.2.18 et 2.4.0-test6 les octets
supplementaires etaient ignores
sans rien dire.)
ENOSPC Une ecriture a echoue car la fin de
bande a ete atteinte.
ENOSYS Appel systeme ioctl(2) inconnu.
ENXIO Durant l'ouverture, le lecteur de
bande n'existe pas.
EOVERFLOW Tentative de lire ou d'ecrire un
bloc de longueur variable plus
grand que la taille des tampons
internes du controleur.
EROFS On tente l'ouverture avec O_WRONLY
ou O_RDWR alors que la bande est
protegee en ecriture.
FICHIERS
/dev/st* Les lecteurs de bandes SCSI a
rembobinage automatique
/dev/nst* Les lecteurs de bandes SCSI sans
rembobinage automatique
NOTES
1. Lors d'un echange de donnees entre systemes
differents, il faut se mettre d'accord sur la
taille des blocs. Les parametres d'un lecteur
apres le demarrage sont souvent differents de
ceux qu'utilisent la plupart des autres
systemes d'exploitation. La plupart utilisent
un mode de blocs de longueur variable si le
lecteur le permet. Ceci concerne la plupart
des lecteurs modernes, y compris les DAT, les
lecteurs 8mm helicoidaux, les DLTs, etc. Il
peut etre judicieux d'utiliser ces lecteurs
en mode de longueur variable sous Linux aussi
(en utilisant MTSETBLK ou MTSETDEFBLK au
demarrage), du moins lors de l'echange de
donnees avec des systemes d'exploitation
differents. L'inconvenient de ceci est qu'il
faut utiliser une taille de bloc assez grande
pour obtenir des taux de transfert
acceptables sur un bus SCSI.
2. Beaucoup de programmes (comme par exemple
tar(1)) permettent a l'utilisateur de
specifier le facteur de bloc sur la ligne de
commande. Notez que ceci determine la taille
de bloc physique uniquement en mode de bloc
de taille variable.
3. 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 etre configures dans le noyau ou charges
comme modules. Si le pilote des bandes SCSI
n'est pas present, le lecteur est reconnu,
mais le support de bande decrit dans cette
page n'est pas disponible.
4. Le pilote ecrit les messages d'erreur sur la
console et/ou les fichiers de journalisation
(log). Les codes SENSE presents dans certains
messages sont automatiquement traduits en
texte si les messages SCSI complets sont
actives dans la configuration du noyau.
5. L'utilisation du tampon interne permet de
bons debits en mode blocs fixes meme avec peu
d'octets lus (avec read(2)) ou ecrits (avec
write(2)). Avec les transferts directs, cela
n'est pas possible et peut provoquer une
surprise lors de la mise a 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 etre desactives.
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 contient les
informations les plus recentes a propos du pilote
et de ses capacites de configuration.
COLOPHON
Cette page fait partie de la publication 3.32 du
projet man-pages Linux. Une description du projet
et des instructions pour signaler des anomalies
peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a
l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe
de traduction francophone au sein du projet
perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess
<URL:http://www.blaess.fr/christophe/>
(1996-2003), Alain Portal
<URL:http://manpagesfr.free.fr/> (2003-2006).
Simon Paillard et l'equipe francophone de
traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en
ecrivant a <debian-l10n-french@lists.debian.org>
ou par un rapport de bogue sur le paquet
manpages-fr.
Vous pouvez toujours avoir acces a la version
anglaise de ce document en utilisant la commande
<< man -L C <section> <page_de_man> >>.