Provided by: manpages-fr_3.32d0.2p4-1_all bug

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> >>.