Provided by: manpages-fr_4.18.1-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

       The  st  driver  provides  the interface to a variety of SCSI tape devices. Currently, the
       driver takes control of all detected devices of type “sequential-access”.  The  st  driver
       uses major device number 9.

       Each  device uses eight minor device numbers. The lowermost five bits in the minor numbers
       are assigned sequentially in the order of detection. In the 2.6 kernel, the bits above the
       eight  lowermost bits are concatenated to the five lowermost bits to form the tape number.
       The  minor  numbers  can  be  grouped  into  two  sets  of  four  numbers:  the  principal
       (auto-rewind)  minor  device  numbers,  n,  and the “no-rewind” device numbers, (n + 128).
       Devices opened using the principal device number will be sent a REWIND command  when  they
       are  closed. Devices opened using the “no-rewind” device number will not. (Note that using
       an auto-rewind device for positioning the tape with, for instance, mt does not lead to the
       desired  result: the tape is rewound after the mt command and the next command starts from
       the beginning of the tape).

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

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

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

       Il n'existe pas de périphériques blocs correspondants.

       The driver uses an internal buffer that has to be large enough to hold at least  one  tape
       block.  Before Linux 2.1.121, the buffer is allocated as one contiguous block. This limits
       the block size to the largest contiguous block of memory the kernel allocator can provide.
       The   limit   is   currently  128 kB  for  32-bit  architectures  and  256 kB  for  64-bit
       architectures. In newer kernels the driver  allocates  the  buffer  in  several  parts  if
       necessary.  By  default,  the  maximum  number of parts is 16. This means that the maximum
       block size is very large (2 MB if allocation of 16 blocks of 128 kB succeeds).

       The driver's internal buffer size is determined by a compile-time constant  which  can  be
       overridden with a kernel startup option. In addition to this, the driver tries to allocate
       a larger temporary buffer at run time if necessary. However, run-time allocation of  large
       contiguous  blocks  of memory may fail and it is advisable not to rely too much on dynamic
       buffer allocation before Linux 2.1.121 (this applies also  to  demand-loading  the  driver
       with kerneld or kmod).

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

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

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

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

       Starting  from Linux 2.6.2, the driver exports in the sysfs directory /sys/class/scsi_tape
       the attached devices and some parameters assigned to the devices.

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

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

       In fixed-block mode the read byte counts can be arbitrary if buffering is  enabled,  or  a
       multiple  of  the  tape  block  size  if buffering is disabled. Before Linux 2.1.121 allow
       writes with arbitrary byte count if buffering is enabled. In all other cases (before Linux
       2.1.121  with  buffering disabled or newer kernel) the write byte count must be a multiple
       of the tape block size.

       In Linux 2.6, the driver tries to use direct transfers between the  user  buffer  and  the
       device. If this is not possible, the driver's internal buffer is used. The reasons for not
       using direct transfers include improper alignment of the user buffer (default is 512 bytes
       but  this  can  be  changed  by  the HBA driver), one or more pages of the user buffer not
       reachable by the SCSI adapter, and so on.

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

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

   Ioctls
       Le  pilote gère trois requêtes ioctl(2). Les requêtes non reconnues par st sont transmises
       au    contrôleur    SCSI.    Les    définitions    ci-dessous    sont     extraites     de
       /usr/include/linux/mtio.h :

   MTIOCTOP  perform a tape operation
       Cette  requête  prend un paramètre de type (struct mtop *). Certains contrôleurs ne gèrent
       pas toutes les opérations. Le pilote renvoie une erreur EIO si le  périphérique  n'accepte
       pas l'opération.

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

       Opérations sur bande magnétique lors d'une utilisation normale :

       MTBSF  Reculer la bande de mt_count marqueurs de fichier.

       MTBSFM Reculer  la  bande de mt_count filemarks. Repositionner la bande sur le côté EOT de
              la dernière marque de fichier.

       MTBSR  Reculer la bande de mt_count enregistrements (blocs bande).

       MTBSS  Reculer la bande de mt_count marques d'ensemble de fichiers.

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

       MTEOM  Aller à la fin des enregistrements (ajouter des fichiers).

       MTERASE
              Erase tape. With Linux 2.6, short erase (mark  tape  empty)  is  performed  if  the
              argument is zero. Otherwise, long erase (erase all) is done.

       MTFSF  Avancer la bande de mt_count marques de fichier.

       MTFSFM Avancer  la  bande  de  mt_count  filemarks. Positionner la bande du côté BOT de la
              dernière marque de fichier.

       MTFSR  Avancer de mt_count enregistrements (blocs bande).

       MTFSS  Avancer de mt_count marques d'ensemble de fichiers.

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

       MTLOCK Verrouiller la porte du lecteur de bande.

       MTMKPART
              Format  the  tape into one or two partitions. If mt_count is positive, it gives the
              size of partition 1 and partition 0 contains the rest of the tape. If  mt_count  is
              zero, the tape is formatted into one partition. From Linux 4.6, a negative mt_count
              specifies the size of partition 0 and the rest of the tape  contains  partition  1.
              The  physical  ordering  of  partitions  depends  on the drive. This command is not
              allowed for a drive unless the partition support is  enabled  for  the  drive  (see
              MT_ST_CAN_PARTITIONS below).

       MTNOP  No  op—flushes  the driver's buffer as a side effect. Should be used before reading
              status with MTIOCGET.

       MTOFFL Rembobiner la bande et éteindre le lecteur.

       MTRESET
              Réinitialiser le lecteur.

       MTRETEN
              Retendre la bande.

       MTREW  Rembobiner la bande.

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

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

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

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

       MTUNLOAD
              Exécuter la commande de déchargement SCSI (n'éjecte pas la bande).

       MTUNLOCK
              Déverrouiller la porte du lecteur de bande.

       MTWEOF Écrire mt_count marques de fichiers.

       MTWSM  Écrire mt_count marques d'ensemble de fichiers.

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

       MTSETDRVBUFFER
              Set various drive and driver options according to bits encoded in  mt_count.  These
              consist  of the drive's buffering mode, a set of Boolean driver options, the buffer
              write threshold, defaults for the block size and density, and timeouts (only  since
              Linux  2.1).  A  single  operation  can affect only one item in the list below (the
              Booleans counted as one item.)

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

              0      Le  contrôleur  ne renverra pas l'état BON en écriture avant que les données
                     ne soient réellement écrites sur le support.

              1      Le contrôleur peut renvoyer l'état BON en écriture dès que les  données  ont
                     été transmises aux tampons internes du lecteur de bande.

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

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

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

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

              Les options booléennes sont :

              MT_ST_BUFFER_WRITES (Défaut : vrai)
                     Les opérations d'écriture en mode de bloc fixes  sont  mises  en  cache.  Si
                     cette  option  est  invalidée,  et si l'enregistreur utilise une longueur de
                     bloc fixe, toutes les  opérations  d'écriture  doivent  se  faire  avec  une
                     longueur multiple de celle du bloc. Cette option doit être fausse pour créer
                     des archives multivolumes fiables.

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

              MT_ST_READ_AHEAD (Défaut : vrai)
                     Cette option indique au pilote de fournir un cache en lecture, ainsi  qu'une
                     lecture  anticipée  des  données en mode de blocs fixes. Si cette option est
                     invalidée, et que le lecteur utilise une taille de blocs fixes,  toutes  les
                     opérations  de lecture doivent se faire avec une taille multiple de celle du
                     bloc.

              MT_ST_TWO_FM (Défaut : faux)
                     Cette option modifie le comportement du pilote quand un fichier  est  fermé.
                     L'attitude  normale consiste à écrire une seule filemark, néanmoins si cette
                     option est validée, le pilote écrira deux filemarks  et  replacera  la  tête
                     au-dessus de la seconde.

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

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

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

              MT_ST_AUTO_LOCK (Défaut : faux)
                     Lorsque cette option est vraie, la porte du lecteur est verrouillée  lorsque
                     le  périphérique  est  ouvert,  et déverrouillée lorsque le périphérique est
                     refermé.

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

              MT_ST_CAN_BSR (Défaut : faux)
                     When read-ahead is used, the tape must sometimes be spaced backward  to  the
                     correct  position  when  the  device is closed and the SCSI command to space
                     backward over records is used for this  purpose.  Some  older  drives  can't
                     process  this  command  reliably and this option can be used to instruct the
                     driver not to use the command. The end result is that, with  read-ahead  and
                     fixed-block  mode,  the  tape  may not be correctly positioned within a file
                     when the device is closed. With Linux 2.6, the default is  true  for  drives
                     supporting SCSI-3.

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

              MT_ST_CAN_PARTITIONS (Défaut : faux)
                     Cette  option  active  la  prise  en charge des partitions multiples sur une
                     bande. Cette option s'applique à tous les périphériques liés au lecteur.

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

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

              MT_NO_WAIT (Défaut : faux)
                     Active le mode immédiat (c.à.d. n'attend pas la fin  de  la  commande)  pour
                     certaines commandes comme le rembobinage.

              Un exemple :

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

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

              With  Linux  2.1.x  and  later,  the  timeout values can be set with the subcommand
              MT_ST_SET_TIMEOUT ORed with the timeout in seconds.  The  long  timeout  (used  for
              rewinds   and  other  commands  that  may  take  a  long  time)  can  be  set  with
              MT_ST_SET_LONG_TIMEOUT. The kernel defaults are very  long  to  make  sure  that  a
              successful command is not timed out with any drive. Because of this, the driver may
              seem stuck even if it is only waiting for the timeout. These commands can  be  used
              to  set more practical values for a specific drive. The timeouts set for one device
              apply for all devices linked to the same drive.

              Starting from Linux 2.4.19 and Linux 2.5.43, the driver supports a status bit which
              indicates  whether  the  drive  requests  cleaning. The method used by the drive to
              return cleaning information is set using the MT_ST_SEL_CLN subcommand. If the value
              is  zero,  the cleaning bit is always zero. If the value is one, the TapeAlert data
              defined in the SCSI-3 standard is used  (not  yet  implemented).  Values  2–17  are
              reserved. If the lowest eight bits are >= 18, bits from the extended sense data are
              used. The bits 9–16 specify a mask to select the bits to look at and the bits 17–23
              specify  the  bit pattern to look for. If the bit pattern is zero, one or more bits
              under the mask indicate the cleaning  request.  If  the  pattern  is  nonzero,  the
              pattern must match the masked sense data byte.

   MTIOCGET  get status
       Cette requête prend un paramètre du type (struct mtget *).

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

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

       mt_resid
              Contient le numéro de partition en cours.

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

       mt_gstat
              Renvoie  des  informations  génériques  d'état  (indépendantes du périphérique). Le
              fichier d'en-tête définit les macros suivantes pour tester les bits d'état :

              GMT_EOF(x)
                     The tape is positioned just after a filemark (always false after  an  MTSEEK
                     operation).

              GMT_BOT(x)
                     The  tape  is  positioned  at  the beginning of the first file (always false
                     after an MTSEEK operation).

              GMT_EOT(x)
                     A tape operation has reached the physical End Of Tape.

              GMT_SM(x)
                     The tape is currently positioned at a setmark (always false after an  MTSEEK
                     operation).

              GMT_EOD(x)
                     The tape is positioned at the end of recorded data.

              GMT_WR_PROT(x)
                     The  drive  is  write-protected. For some drives this can also mean that the
                     drive does not support writing on the current medium type.

              GMT_ONLINE(x)
                     The last open(2)  found the drive  with  a  tape  in  place  and  ready  for
                     operation.

              GMT_D_6250(x)
              GMT_D_1600(x)
              GMT_D_800(x)
                     This  “generic”  status  information reports the current density setting for
                     9-track ½" tape drives only.

              GMT_DR_OPEN(x)
                     The drive does not have a tape in place.

              GMT_IM_REP_EN(x)
                     Immediate report mode. This bit is set if there are no guarantees  that  the
                     data has been physically written to the tape when the write call returns. It
                     is set zero only when the driver does not buffer data and the drive  is  set
                     not to buffer data.

              GMT_CLN(x)
                     The  drive  has requested cleaning. Implemented since Linux 2.4.19 and Linux
                     2.5.43.

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

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

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

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

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

VALEUR RENVOYÉE

       EACCES Tentative d'écriture ou d'effacement sur une bande  protégée  en  écriture.  (Cette
              erreur ne peut pas être détectée lors de open(2).)

       EBUSY  Le périphérique est déjà utilisé ou le pilote n'a pas assez de mémoire.

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

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

       EIO    L'opération demandée a échoué.

       ENOMEM The  byte  count  in  read(2)  is smaller than the next physical block on the tape.
              (Before Linux 2.2.18 and Linux 2.4.0 the extra bytes have been silently ignored.)

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

       ENOSYS Appel système ioctl(2) inconnu.

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

       EOVERFLOW
              Tentative de lire ou d'écrire un bloc de longueur variable plus grand que la taille
              des tampons internes du contrôleur.

       EROFS  On  tente  l'ouverture  avec  O_WRONLY ou O_RDWR alors que la bande est protégée en
              écriture.

FICHIERS

       /dev/st*
              Les lecteurs de bandes SCSI à rembobinage automatique

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

NOTES

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

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

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

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

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

VOIR AUSSI

       mt(1)

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

TRADUCTION

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

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

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