Seth Woolley's Man Viewer

st(4) - st, st - Lecteur de bandes SCSI - man 4 st

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

ST(4)                     Manuel du programmeur Linux                    ST(4)



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  driver st fournit une interface vers un grand nombre de lecteurs de
       bandes SCSI.  Actuellement, ce driver prend le contrle  de  tous  les
       priphriques  dtects de type "accs squentiel".  Le driver st
       utilise un numro majeur valant 9.

       Chaque priphrique utilise huit numros  mineurs.  Les  5  bits  de
       poids  faibles  des  numros  mineurs sont assigns squentiellement
       dans l'ordre de dtection. Les numros mineurs peuvent tre groups
       en  deux  ensembles de quatre nombres : les numros mineurs principaux
       des priphriques (auto-rewind), n,  et  les   numros  mineurs  des
       priphriques "no-rewind" (n+ 128).

       Les  priphriques  ouverts  avec  le numro principal recevront une
       commande REWIND   la fermeture.  Les priphriques ouverts  avec  le
       numro  "no-rewind"  ne  la recevront pas.  (Notez qu'essayer de posi-
       tionner la bande un priphrique auto-rewind en utilisant, par  exem-
       ple,  mt ne conduit pas au rsultat dsir : la bande est   nouveau
       rembobine aprs la commande mt et la commande suivante  prend  effet
       ds le dbut de la bande.

       Au  sein  de  chaque  groupe,  4 numros mineurs sont disponibles pour
       dfinir des priphriques avec  des  caractristiques  diffrentes
       (taille   de   bloc,  compression,  densit...)  Lorsque  le  systme
       dmarre, seul le premier priphrique est disponible. Les  3  autres
       sont  activs lorsque les caractristiques par dfaut sont dfinies
       (voir plus bas). (En modifiant les constantes     la  compilation,  on
       peut  modifier  la  rpartition entre le nombre maximal de lecteurs de
       bandes et le nombre de numros mineurs pour chaque lecteur. Les  allo-
       cations  par  dfaut  permettent  de contrler 32 lecteurs de bandes,
       alors qu'il est possible de contrler jusqu'  64 lecteurs  avec  deux
       numros mineurs pour les options diffrentes.

       Les fichiers spciaux sont crs typiquement ainsi :
              mknod(1,2) -m 660 /dev/st0   c 9 0
              mknod(1,2) -m 660 /dev/st0l  c 9 32
              mknod(1,2) -m 660 /dev/st0m  c 9 64
              mknod(1,2) -m 660 /dev/st0a  c 9 96
              mknod(1,2) -m 660 /dev/nst0  c 9 128
              mknod(1,2) -m 660 /dev/nst0l c 9 160
              mknod(1,2) -m 660 /dev/nst0m c 9 192
              mknod(1,2) -m 660 /dev/nst0a c 9 224

       Il n'existe pas de priphriques blocs correspondants.

       Le  driver  utilise  une  mmoire  tampon interne qui doit tre assez
       large pour contenir au moins un bloc de donnes  de  bande.  Dans  les
       noyaux  prcdents le 2.1.121, le buffer tait allou sous forme de
       bloc continu. Ceci limitait la taille de bloc au plus grand espace con-
       tigu  disponible pour l'allocation du noyau. Cette limite est actuelle-
       ment de 128 Ko pour les architecture 32 bits et  254  Ko  pour  les  64
       bits.  Dans les noyaux plus rcents, le driver alloue la mmoire tam-
       pon en plusieurs parties si ncessaire. Par dfaut le nombre  maximal
       de  parties  est  16.  Ceci signifie que la taille maximale de bloc est
       trs grande (2 Mo si l'allocation de 16 blocs de 128 Ko russit).

       La taille de la mmoire tampon interne est dtermine par  une  con-
       stante     la  compilation  du  noyau,  que l'on peut craser par une
       option de dmarrage du systme. De plus, le driver  essaie  d'allouer
       un buffer temporaire plus grand lors de son excution si cela s'avre
       ncessaire. Toutefois l'allocation    l'excution  de  grands  blocs
       contigus peut chouer, et il vaut mieux ne pas compter dessus avec les
       noyaux antrieurs au 2.1.121.

       Le driver ne supporte pas spcifiquement un  type  ou  une  marque  de
       lecteur  de  bande.  Aprs  le  dmarrage du systme, les options du
       priphriques sont dfinies par le micro-code du priphrique. Par
       exemple  si celui-ci rclame un mode de blocs fixes, le driver de ban-
       des utilisera ce mode. Les options peuvent  tre  modifies  par  des
       appels   ioctl()   explicites,   et   restent   effectives  lorsque  le
       priphrique est ferm puis rouvert. La  configuration  des  options
       affecte  aussi bien les priphriques auto-rewind que les non-rewind.

       Des  options  diffrentes  peuvent  tre  fournies  pour  diffrents
       priphriques  au sein du sous-groupe de quatre. Les options prennent
       effet quand le priphrique est ouvert. Par exemple un administrateur
       peut  dfinir  un  dispositif  qui crit en mode blocs fixes avec une
       certaine taille, et un qui crit avec des blocs de longueurs variables
       (si le priphrique accepte les deux modes).

       Le  driver  supporte  les partitions de bandes si elles sont accept(2,8)es
       par le lecteur. (Notez que les partitions de bande n'ont rien     voir
       avec  les partitions de disques. Une bande partitionne peut tre vue
       comme un ensemble de bandes logiques dans le mme support).   Le  sup-
       port  des  partitions doit tre activ par un ioctl. L'emplacement de
       la bande est sauvegard au sein  de  chaque  partition  au  cours  des
       changements  de partitions. La partition utilise pour les oprations
       suivantes est slectionne avec un ioctl. Le changement de  partition
       est  excut  au moment de la prochaine opration bande pour viter
       les mouvements inutiles de la bande.  Le nombre maximal  de  partitions
       sur  une  bande  est  dfini par une constante   la compilation (4 
       l'origine). Le driver contient un ioctl qui  peut  formater  une  bande
       avec une ou deux partitions.

       Le  fichier  spcial de priphrique /dev/tape est gnralement un
       lien symbolique, ou mme un lien matriel sur le  lecteur  de  bandes
       par dfaut.

TRANSFERT DES DONNES
       Le  driver  accepte  un fonctionnement aussi bien dans un mode de blocs
       fixes que dans un mode de blocs de longueur variable (si c'est accept(2,8)
       par  le  lecteur). En mode de blocs fixes, le priphrique crit les
       blocs de la taille indique et la taille des blocs ne dpend  pas  de
       la  quantit  de  donnes transmise lors de l'appel systme. Dans le
       mode de longueur variable, un bloc de  donne  est  crit     chaque
       appel  systme  write(1,2) et le nombre d'octets transmis indique la taille
       du bloc correspondant sur la bande. Notez que les blocs  sur  bande  ne
       contiennent  aucune  information  sur  le mode d'criture utilis. En
       lecture, la seule chose importante  est  d'utiliser  une  commande  qui
       accepte la taille du bloc sur bande.

       En  mode  variable, le nombre d'octets   lire n'a pas besoin de corre-
       spondre exactement   la  taille  du  bloc  sur  bande.  Si  le  nombre
       demand  est  plus  grand  que la taille du bloc suivant sur la bande,
       l'appel systme renverra la quantit de donnes effectivement  lues.
       Si  la  taille  de bloc est plus grande que le nombre demand, l'appel
       systme renverra la quantit voulue, et le  reste  des  donnes  est
       oubli.

       En  mode  fixe, le nombre d'octets demand peut tre arbitraire si la
       mmoire tampon est active, ou un multiple de la taille de bloc si ce
       tampon  est  dsactiv.  Les noyaux antrieurs au 2.1.121 permettent
       l'criture avec un nombre quelconque si  les  tampons  sont  activs.
       Dans tous les autres cas (y compris les noyaux plus rcents) le nombre
       d'octets   crire doit tre un multiple de la taille des blocs.

       Une marque est  automatique  crite  sur  la  bande  si  la  dernire
       opration avant fermeture tait une criture.

       Lorsqu'une  telle  marque  est rencontre en lecture, les choses suiv-
       antes se produisent. S'il reste des donnes dans le tampon,  lorsqu'on
       trouve  la marque, les donnes en mmoire sont renvoyes. La lecture
       suivante renvoie zro octets. La lecture suivante renvoie les donnes
       du fichier suivant. La fin des donnes enregistres est signal(2,7)e par
       un retour de zro octets pour deux appels successifs  en  lecture.  Le
       troisime appel renvoie une erreur.

IOCTLS
       Le  driver supporte trois requtes ioctl.  Les requtes non reconnues
       par st sont transmises  au  contrleur  SCSI.   Les  dfinitions  ci-
       dessous sont extraites de /usr/include/linux/mtio.h:

   MTIOCTOP - Effectue une opration sur la bande.
       Cette  requte  prend  un  argument  du type (struct mtop *) indiquant
       l'opration   effectuer.  Certains  contrleurs  ne  permettent  pas
       toutes  les  oprations.   Le  contrleur renvoie une erreur EIO s'il
       n'accepte pas l'opration.

       /* Structure MTIOCTOP -  pour les oprations sur bande */
       struct mtop {
           short  mt_op;    /* oprations dfinies ci-dessous */
           int    mt_count; /* combien d'oprations           */
       };

       Oprations sur bande magntique lors d'une utilisation normale :

       [NDT] Je conserve les termes de filemark, et setmark   dfaut de ter-
       mes prcis en franais.

       MTBSF         Reculer la bande de mt_count filemarks.
       MTBSFM        Reculer la bande de mt_count filemarks.  Repositionner la
                     bande sur le ct EOT de la dernire filemark.
       MTBSR         Reculer  la  bande  de  mt_count  enregistrements  (blocs
                     bande).
       MTBSS         Reculer la bande de mt_count setmarks.
       MTCOMPRESSION Valider  la  compression  des  donnes sur bande dans le
                     lecteur si mt_count est non-nul, et dsactiver  la  com-
                     pression  si  mt_count est nul. Cette commande utilise la
                     page MODE 15 support par la plupart des DATs.
       MTEOM         Aller     la  fin  des  enregistrements   (ajouter   des
                     fichiers).
       MTERASE       Effacer la bande.
       MTFSF         Avancer la bande de mt_count filemarks.
       MTFSFM        Avancer  la  bande de mt_count filemarks.  Positionner la
                     bande du ct BOT de la dernire filemark.
       MTFSR         Avancer de mt_count enregistrements (blocs bande).
       MTFSS         Avancer de mt_count setmarks.
       MTLOAD        Excuter la commande de chargement SCSI. Un cas  partic-
                     ulier  se prsenter avec certains chargeurs automatiques
                     HP. Si mt_count  correspond     somme  de  la  constante
                     MT_ST_HPLOADER_OFFSET  et  d'un  nombre,  ce  dernier est
                     envoy au pilote pour  contrler  le  chargeur  automa-
                     tique.
       MTLOCK        Verrouiller la porte du lecteur de bande.
       MTMKPART      Formater  la bande en une ou deux partitions. Si mt_count
                     est non-nul, il correspond   la taille de  la  premire
                     partition, et la seconde partition correspond au reste de
                     la bande. Si mt_count est nul, la bande  n'est  formate
                     qu'en   une   seule   partition.   Cette  commande  n'est
                     autorise que  si  le  support  de  partitionnement  est
                     activ  pour  le lecteur (voir MT_ST_CAN_PARTITIONS plus
                     bas).
       MTNOP         Ne rien faire - Vider les buffers du driver - A  utiliser
                     avant de lire le statut avec MTIOCGET.
       MTOFFL        Rembobiner la bande et teindre le lecteur.
       MTRESET       Rinitialiser le lecteur.
       MTRETEN       Retendre la bande.
       MTREW         Rembobiner la bande.
       MTSEEK        Rechercher  sur la bande le bloc numro mt_count.  Cette
                     opration ncessite soit un contrleur SCSI-2 qui sup-
                     porte   la   commande   LOCATE  (adresse  spcifique  au
                     priphrique), soit un lecteur SCSI-1 compatible  Tand-
                     berg  (Tandberg,  Archive  Viper,  Wangtek,  ...  ).   Le
                     numro de bloc devrait toujours tre  un  numro  ren-
                     voy   prcdemment   par  MTIOCPOS  si  les  adresses
                     spcifiques au lecteur sont utilises.
       MTSETBLK      Positionner la longueur de blocs du lecteur   la  valeur
                     spcifie  dans  mt_count.   Une longueur de bloc nulle
                     place le lecteur dans le mode de blocs de  tailles  vari-
                     ables.
       MTSETDENSITY  Fixe  la  densit  de  la  bande     celle  code dans
                     mt_count.  Les codes  des  densits  accept(2,8)es  par  un
                     lecteur  sont disponibles dans la documentation de celui-
                     ci.
       MTSETPART     La partition active devient celle indique par  mt_count
                     .   Les  partitions sont numrotes depuis zro. Cette
                     commande n'est autorise que si le support de partition-
                     nement est activ pour le lecteur (voir MT_ST_CAN_PARTI-
                     TIONS plus bas).
       MTUNLOAD      Excuter la commande de  dchargement  SCSI  (n'jecte
                     pas la bande).
       MTUNLOCK      Dverrouiller la porte du lecteur de bande.
       MTWEOF        crire mt_count filemarks.
       MTWSM         crire mt_count setmarks.

       Fonctions  de  configuration  du  lecteur de bande magntique (pour le
       Super-Utilisateur) :
       MTSETDRVBUFFER
               Positionner diverses options du contrleur ou  du  lecteur  en
               fonction  des bits encods dans mt_count.  Ces options concer-
               nent le type de buffer du lecteur, 13  options  boolennes  du
               contrleur,  le  seuil  d'criture du buffer, les valeurs par
               dfaut des tailles de blocs et  de  densit,  ainsi  que  les
               dlais  (noyaux  >= 2.1).  Une fonction n'agit que sur un seul
               des lments de la liste ci-dessus   la fois.

               Une valeur ayant ses 4 bits de poids forts   0 sera  utilise
               pour indiquer le type de buffer du lecteur. Les types de buffer
               sont :

                   0   Le contrleur ne renverra pas le statut BON en crit-
                       ure  avant  que  les  donnes  ne  soient  rellement
                       crites sur le support.
                   1   Le contrleur peut renvoyer le statut BON en criture
                       ds  que les donnes ont t transmises aux buffers
                       internes du lecteur de bande.
                   2   Le contrleur peut renvoyer le statut BON en criture
                       ds  que les donnes ont t transmises aux buffers
                       internes du lecteur de bande, si toutes les  critures
                       prcdentes  des  buffers  sur  le  support  se  sont
                       droules correctement.

               Pour contrler le seuil  d'criture,  on  doit  inclure  dans
               mt_count  la  constante MT_ST_WRITE_THRESHOLD associe 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 excder la taille des buffers internes du
               contrleur.  (voir DESCRIPTION, plus bas).

               Pour valider ou invalider les options  boolennes,  la  valeur
               mt_count  doit  inclure  l'une  des  constantes  MT_ST_BOOLEANS
               MT_ST_SETBOOLEANS,  MT_ST_CLEARBOOLEANS,  ou  MT_ST_DEFBOOLEANS
               associes  par  un OU binaire avec une combinaison des options
               dcrites ci-dessous.

               Avec MT_ST_BOOLEANS les options sont dfinies avec les valeurs
               indiques.  Avec  MT_ST_SETBOOLEANS les options sont actives
               slectivement et inhibes avec MT_ST_DEFBOOLEANS.

               Les options par dfaut  pour  un  contrleur  de  bande  sont
               choisies  avec  MT_ST_DEFBOOLEANS.  Un priphrique non-actif
               (par exemple avec un numro mineur de 32 ou 160)  est  activ
               lorsque   les  options  par  dfaut  sont  dfinies  pour  la
               premire fois. Un priphrique actif hrite des options non
               fixes explicitement du priphrique actif au dmarrage.

               Les options boolennes sont :

               MT_ST_BUFFER_WRITES  (Dfaut: vrai)
                      oprations  d'criture dans la mmoire tampon en mode
                      de blocs fixes.  Si cette option est invalide,  et  si
                      l'enregistreur utilise une longueur de bloc fixe, toutes
                      les oprations d'criture doivent se  faire  avec  une
                      longueur  multiple  de celle du bloc.  Cette option doit
                      tre fausse  pour  crer  des  archives  multi-volumes
                      fiables.

               MT_ST_ASYNC_WRITES  (Dfaut: vrai)
                      Quand   cette   option  est  valide,  les  oprations
                      d'criture retournent immdiatement  si  les  donnes
                      tiennent  dans  le  buffer  du driver, sans attendre que
                      celles-ci soient effectivement transmises au lecteur  de
                      bande.   Le  seuil  du  buffer d'criture dtermine le
                      taux de remplissage du buffer avant d'effectuer une com-
                      mande    SCSI.     Toute   erreur   renvoye   par   le
                      priphrique  sera  conserve  jusqu'   l'opration
                      suivante.   Cette  option  doit tre fausse pour crer
                      des archives multi-volumes fiables.

               MT_ST_READ_AHEAD  (Dfaut: vrai)
                      Cette option indique au driver de fournir  un  cache  en
                      lecture, ainsi qu'une lecture anticipe des donnes en
                      mode de blocs fixes.  Si cette option est invalide, et
                      que  le lecteur utilise une taille de blocs fixe, toutes
                      les oprations de lecture doivent  se  faire  avec  une
                      taille multiple de celle du bloc.

               MT_ST_TWO_FM  (Dfaut: faux)
                      Cette  option modifie le comportement du driver quand un
                      fichier  est  ferm.  L'attitude  normale  consiste  
                      crire  une  seule filemark, nanmoins si cette option
                      est  valide,  le  driver  crira  deux  filemarks  et
                      replacera la tte au-dessus de la seconde.

                      Note:  Cette option ne doit pas tre utilise avec les
                      lecteurs de bandes QIC car  ils  ne  sont  pas  capables
                      d'craser une filemark.  Ces lecteurs dtectent la fin
                      des donnes enregistres  en  cherchant  de  la  bande
                      vierge     la  place  des  deux filemarks conscutives
                      habituelles.  La plupart des  autres  lecteurs  courants
                      dtectent  galement  la  prsence  de  bande vierge,
                      aussi l'utilisation des deux filemarks n'est gnrale-
                      ment  utile  que lors d'change de bandes avec d'autres
                      systmes.

               MT_ST_DEBUGGING  (Dfaut: faux)
                      Cette option valide les divers messages de dbogage  du
                      driver,  si  celui-ci a t compil avec la constante
                      DEBUG ayant une valeur non-nulle).

               MT_ST_FAST_EOM  (Dfaut: faux)
                      Cette option indique que les oprations  MTEOM  doivent
                      tre  envoyes  directement  au  lecteur,  ce qui peut
                      acclrer les oprations, mais aussi faire perdre  au
                      driver  le  compte  des pistes du fichier en cours, nor-
                      malement  renvoy  par  la   requte   MTIOCGET.    Si
                      MT_ST_FAST_EOM  est  fausse, le contrleur rpondra 
                      une requte MTEOM en sautant en avant  de  fichiers  en
                      fichiers.

               MT_ST_AUTO_LOCK (Dfaut: faux)
                      Lorsque  cette option est vraie, la porte du lecteur est
                      verrouille  lorsque  le  fichier  priphrique   est
                      ouvert, et dverrouille lorsque le priphrique est
                      referm.

               MT_ST_DEF_WRITES (Dfaut: faux)
                      Les options de bande (taille  de  bloc,  mode,  compres-
                      sion...)   peuvent   varier   lorsque  l'on  passe  d'un
                      priphrique  li     un   lecteur       un   autre
                      priphrique  correspondant  au  mme lecteur.  Cette
                      option dfinit  si  les  changements  sont  fournis  au
                      pilote  en  utilisant  les  commandes  SCSI,  et  si les
                      capacits d'auto-dtection du lecteur sont fiables. Si
                      l'option est fausse, le pilote envoie les commandes SCSI
                      immdiatement  lorsque  le  priphrique  change.  Si
                      cette  option  est vraie, les commandes SCSI ne sont pas
                      envoyes avant une demande d'criture.  Dans  ce  cas,
                      le micro-code est habilit   dtecter la structure de
                      la bande lors de la lecture, et les  commandes  SCSI  ne
                      sont  utilises  que pour tre srs que la bande soit
                      crite correctement.

               MT_ST_CAN_BSR (Dfaut: faux)
                      Lorsque la lecture anticipe est  utilise,  la  bande
                      doit parfois tre ramene en arrire en position cor-
                      recte lors de la  fermeture  du  priphrique,  et  on
                      utilise  alors  la commande SCSI pour sauter en arrire
                      par  dessus  les   enregistrements.   Certains   anciens
                      lecteurs ne traitent pas correctement cette commande, et
                      cette option permet d'en avertir le pilote. Le rsultat
                      final  est  qu'une  bande  avec  bloc  fixes  et lecture
                      anticipe peut tre mal positionne dans  un  fichier
                      lors de la fermeture du priphrique.

               MT_ST_NO_BLKLIMS (Dfaut: faux)
                      Certains lecteurs n'acceptent pas la commande de lecture
                      des limites de blocs. Si l'on utilise cette  option,  le
                      pilote n'invoque pas cette commande. L'inconvnient est
                      que le pilote ne peut pas vrifier, avant d'envoyer des
                      commandes,  si  la  taille de bloc choisie est accept(2,8)e
                      par le lecteur.

               MT_ST_CAN_PARTITIONS (Dfaut: faux)
                      Cette option active le support des partitions  multiples
                      sur  une  bande.   Cette  option  s'applique   tous les
                      priphriques lis au lecteur.

               MT_ST_SCSI2LOGICAL (Dfaut: faux)
                      Cette option indique au pilote d'utiliser  les  adresses
                      de  blocs  logiques  dfinies  dans le standard SCSI-2,
                      lors de oprations 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 spcifiques au priphrique.
                      Il est trs recommand d'activer cette  option  si  le
                      lecteur  supporte les adresses logiques car elles conti-
                      ennent galement les filemarks.  Il  existe  d'ailleurs
                      quelques  lecteurs  qui  ne  supportent que les adresses
                      logiques.

               MT_ST_SYSV (Dfaut: faux)
                      Lorsque cette option est valide,  les  priphriques
                      de  bande utilisent la smantique Systme V. Sinon ils
                      utilisent la smantique BSD. La diffrence  principale
                      est   le   comportement   lors   de  la  fermeture  d'un
                      priphrique en lecture. Avec Systme V, la bande est
                      positionne  en  avant   la suite de la filemark suiv-
                      ante si cela n'a pas dj  eu lieu lors de la  lecture.
                      Dans la smantique BSD, la position ne change pas.
               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 dfaut pour un priphrique peut tre
               configure avec MT_ST_DEF_BLKSIZE et le code de  densit  par
               dfaut avec MT_ST_DEFDENSITY. Les valeurs des paramtres sont
               associes par un OU logique avec le code opratoire.

               Avec les noyaux 2.1.x et ultrieurs, la valeur de dlai maxi-
               mum  peut tre fournie avec la sous-commande MT_ST_SET_TIMEOUT
               associe par OU avec le dlai en  seconde.   Le  dlai  long
               (utilis  pour les rembobinages ou les commandes pouvant durer
               longtemps) peut tre configur  avec  MT_ST_SET_LONG_TIMEOUT.
               Les  valeurs par dfaut du noyau sont trs longues pour tre
               sre qu'une commande valide ne soit  jamais  interrompue  pour
               dpassement  de  dlai,  et  ceci  quelque soit le lecteur. A
               cause de cela, le pilote peut parfois sembler gel alors qu'il
               est en attente de dpassement de dlai. Ces commandes permet-
               tent donc de fixer des valeurs plus pratiques pour  un  lecteur
               donn.  Les dlais fixs pour un priphrique s'appliquent
                 tous les priphriques lis au mme lecteur.

   MTIOCGET - Obtenir le statut
       Cette requte prend un argument du type (struct mtget *).

       /* Structure pour MTIOCGET - Statut d'une bande magntique */
       struct mtget {
           long   mt_type;
           long   mt_resid;
           /* Les registres suivants dpendent du matriel */
           long   mt_dsreg;
           long   mt_gstat;
           long   mt_erreg;
           /* Ces deux derniers champs sont parfois inutiliss */
           daddr_t          mt_fileno;
           daddr_t          mt_blkno;
       };

       mt_type    Le  fichier  d'en-tte  dfinit  plusieurs  valeurs   pour
                  mt_type,  mais le driver actuel renvoie uniquement les types
                  gnriques  MT_ISSCSI1  (lecteur  SCSI-1  gnrique)  et
                  MT_ISSCSI2 (lecteur SCSI-2 gnrique).
       mt_resid   contient le numro de partition courante.
       mt_dsreg   renvoie  la  configuration  actuelle  de la longueur de bloc
                  (dans les 24 bits de poids faibles) et la densit (dans les
                  8  bits  de  poids  forts).   Ces  champs  sont dfinis par
                  MT_ST_BLKSIZE_SHIFT,     MT_ST_BLKSIZE_MASK,      MT_ST_DEN-
                  SITY_SHIFT, et MT_ST_DENSITY_MASK.
       mt_gstat   renvoie  des  informations gnriques de statut (indpen-
                  dants du priphrique).  Le  fichier  d'en-tte  dfinit
                  les macros suivantes pour tester les bits de statut :
                  GMT_EOF(x)  :  La  bande  est  positionne juste aprs une
                      filemark (toujours faux aprs une opration MTSEEK).
                  GMT_BOT(x) : La bande est positionne juste  au  dbut  du
                      premier  fichier  (toujours  faux  aprs une opration
                      MTSEEK).
                  GMT_EOT(x) : Une opration a atteint la fin physique de  la
                      bande (End Of Tape).
                  GMT_SM(x)  : La bande est positionne sur une setmark (tou-
                      jours faux aprs une opration MTSEEK).
                  GMT_EOD(x) :  La  bande  est  positionne     la  fin  des
                      donnes enregistres.
                  GMT_WR_PROT(x)  : La bande est protge en criture. Pour
                      certains enregistreurs ceci signifie qu'ils ne  support-
                      ent pas l'criture sur ce type de bande.
                  GMT_ONLINE(x)  : La dernire opration open(2,3,n)() a trouv le
                      lecteur prt   agir, avec une bande   l'intrieur.
                  GMT_D_6250(x), GMT_D_1600(x), GMT_D_800(x)  :  Ces  informa-
                      tions  "gnriques"  de  statut  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): Mode de rapport  immdiat.   Ce  bit  est
                      activ   lorsqu'il  n'y  a  aucune  assurance  que  les
                      donnes aient t physiquement crite sur  la  bande
                      lors  du retour de l'appel systme. Le bit est   zro
                      seulement lorsque le lecteur ne cache pas  les  donnes
                      et  que  le  pilote  est configur pour ne pas faire de
                      cache non plus.
       mt_erreg   Le seul champ dfini dans mt_erreg est le nombre  d'erreurs
                  corriges, dans les 16 bits de poids faibles (comme dfini
                  par les masques MT_ST_SOFTERR_SHIFT et  MT_ST_SOFTERR_MASK).
                  A  cause  d'incompatibilits  dans les mthodes utilises
                  par  les  lecteurs  pour  rendre  compte   des   corrections
                  d'erreur,  cette  valeur n'est pas toujours fournie (la plu-
                  part des lecteurs ne renvoient pas, par dfaut, les erreurs
                  corriges,  mais  cela peut tre modifi avec la commande
                  SCSI MODE SELECT).
       mt_fileno  renvoie le numro du fichier en cours (commenant     0).
                  La valeur est mise a -1 si le numro du fichier est inconnu
                  (par exemple aprs un MTBSS ou un MTSEEK).
       mt_blkno   renvoie  le  numro  de  bloc   (commenant       0)   
                  l'intrieur  du fichier en cours.  Cette valeur est mise 
                  -1 quand le numro de bloc est inconnu (par exemple  aprs
                  un MTBSF, un MTBSS, ou un MTSEEK).

   MTIOCPOS - Obtenir la position de la bande
       Cette  requte  prend  un argument du type (struct mtpos *) et renvoie
       une valeur, spcifique au lecteur, correspondant au numro de bloc en
       cours,  et  qui n'est pas la mme que mt_blkno renvoye par MTIOCGET.
       Ce lecteur doit tre un SCSI-2 qui supporte la commande READ  POSITION
       ou  un  lecteur  SCSI-1  compatible  Tandberg (Tandberg, Archive Viper,
       Wangtek, ... ).

       /* Structure pour commande MTIOCPOS - Obtenir la position */
       struct     mtpos {
           long   mt_blkno; /* current block number */
       };


VALEUR RENVOYE
       EIO           L'opration demande a chou.

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

       EACCES        Tentative  d'criture  ou  d'effacement  sur  une  bande
                     protge  en  criture.   (Ceci  ne  peut  pas   tre
                     dtect lors de open(2,3,n)().)

       EFAULT        Le paramtre de commande pointe en dehors de la mmoire
                     adressable par le processus appelant.

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

       EBUSY         Le priphrique est dj  utilis ou  le  driver  n'a
                     pas assez de mmoire.

       EOVERFLOW     Tentative  de lire ou d'crire un bloc de longueur vari-
                     able plus grand que la taille  des  buffers  internes  du
                     contrleur.

       EINVAL        Un  appel  systme ioctl() a un argument illgal, ou la
                     taille de bloc demande tait incorrecte.

       ENOSYS        Appel systme ioctl() inconnu.

       EROFS         On tente l'ouverture avec O_WRONLY ou O_RDWR alors que la
                     bande est protge en criture.

FICHIERS
       /dev/st*  : Les lecteurs de bandes SCSI   rembobinage automatique
       /dev/nst* : Les lecteurs de bandes SCSI sans rembobinage automatique

AUTEUR
       Le  pilote  a  t crit par Kai Mkisara (Kai.Makisara@metla.fi) 
       partir d'un pilote crit par Dwayne Forsyth. Plusieurs autres  person-
       nes ont galement collabor   l'criture du pilote.

VOIR AUSSI
       mt(1)

       Le  fichier  README.st  dans les sources du noyau contient les informa-
       tions les plus rcentes   propos du pilote et de  ses  capacits  de
       configuration.

NOTES
       1.  Lors d'un change de donnes entre systmes diffrents, il faut
       se mettre d'accord sur  la  taille  des  blocs.  Les  paramtres  d'un
       lecteur   aprs   le  dmarrage  sont  souvent  diffrents  de  ceux
       qu'utilisent la plupart des autres systmes d'exploitation.   La  plu-
       part  utilisent  un mode de blocs de longueur variable si le lecteur le
       permet. Ceci concerne la plupart des lecteurs modernes, y  compris  les
       DATs,  les  lecteurs 8mm hlicodaux, les DLTs... Il peut tre judi-
       cieux d'utiliser ces lecteurs en mode de longueur variable  sous  Linux
       aussi  (en  utilisant  MTSETLK  ou MTSETDEFBLK au dmarrage), du moins
       lors de  l'change  de  donnes  avec  des  systmes  d'exploitation
       diffrents.   L'inconvnient  de  ceci  est  qu'il  faut utiliser une
       taille de bloc assez grande pour obtenir des taux de transfert  accept-
       able sur un bus SCSI.

       2. Beaucoup de programmes (comme tar par exemple) permettent   l'util-
       isateur de spcifier le facteur de blocage sur la ligne  de  commande.
       Notez que ceci dtermine 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
       tre configurs dans le noyau ou chargs comme modules. Si le pilote
       des  bandes  SCSI  n'est  pas prsent, le lecteur est reconnu, mais le
       support de bande dcrit dans cette page n'est pas disponible.

       4. Le pilote crit les messages d'erreur  sur  la  console(4,n)  et/ou  les
       fichiers  de  journalisation (log). Les codes SENSE prsents dans cer-
       tains messages sont automatiquement traduits en texte si  les  messages
       SCSI complets sont activs dans la configuration du noyau.


COPYRIGHT
       1995 Robert K. Nichols.  1999 Kai Mkisara.


TRADUCTION
       Christophe Blaess, 1996-2003.



LDP                             21 juillet 2003                          ST(4)

References for this manual (incoming links)