dwww Home | Manual pages | Find package

st(4)                      Kernel Interfaces Manual                      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
       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 concate-
       nated 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  num-
       bers,  (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 de-
       vice 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 op-
       tions 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  ar-
       chitectures.  In newer kernels the driver allocates the buffer in seve-
       ral 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 alloca-
       tion 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 addi-
       tion 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  ce-
       lui-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) ex-
       plicites  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 ac-
       cepte 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 par-
       titions doit être activé par un ioctl(2). L'emplacement de la bande est
       sauvegardé au sein de chaque partition au cours des changements de par-
       titions. 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  in-
       utiles  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 par-
       titions.

       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 corres-
       pondant sur la bande. Notez que les blocs de la  bande  ne  contiennent
       aucune  information sur le mode d'écriture utilisé : la seule chose im-
       portante 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 be-
       soin 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 de-
       mandé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 disa-
       bled. 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 mul-
       tiple 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 im-
       proper 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  ren-
       voie 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 cor-
              respond à la somme de la constante MT_ST_HPLOADER_OFFSET et d'un
              nombre,  ce dernier est envoyé au pilote pour contrôler le char-
              geur automatique.

       MTLOCK Verrouiller la porte du lecteur de bande.

       MTMKPART
              Format the tape into one or two partitions. If mt_count is posi-
              tive,  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 speci-
              fies 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 parti-
              tion  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  com-
              mande  LOCATE (adresse spécifique au périphérique), soit un lec-
              teur SCSI-1 compatible Tandberg (Tandberg, Archive Viper,  Wang-
              tek, ... ).  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 au-
              torisé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 su-
       perutilisateur) :

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

              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 bi-
              naire « | ». Le nombre de blocs concerne des blocs  de  1024 oc-
              tets,  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 as-
              socié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 op-
              tions par défaut sont définies pour la première fois.  Un  péri-
              phé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 lon-
                     gueur 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 ef-
                     fectivement 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  vali-
                     dé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 ren-
                     voyé 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éver-
                     rouillée lorsque le périphérique est refermé.

              MT_ST_DEF_WRITES (Défaut : faux)
                     Les options de bande  (taille  de  bloc,  mode,  compres-
                     sion...)  peuvent varier lorsque l'on passe d'un périphé-
                     rique lié à un lecteur à un autre périphérique correspon-
                     dant au même lecteur. Cette option définit si les change-
                     ments 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 spa-
                     ced backward to the correct position when the  device  is
                     closed  and  the  SCSI command to space backward over re-
                     cords 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  com-
                     mande. L'inconvénient est que le pilote ne peut pas véri-
                     fier, 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 posi-
                     tion (aussi bien lors des commandes  MTSEEK  et  MTIOCPOS
                     que  lors  des changements de partitions). Sinon, il uti-
                     lise 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  po-
                     sitionné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  as-
              socié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  se-
              conds.  The  long  timeout  (used for rewinds and other commands
              that may take a long time) can be  set  with  MT_ST_SET_LONG_TI-
              MEOUT.  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 ap-
              ply 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 clea-
              ning. The method used by the drive to return  cleaning  informa-
              tion  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  re-
              quest.  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  cor-
              rigé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  modi-
              fié avec la commande SCSI MODE SELECT).

       mt_fileno
              Renvoie  le  numéro du fichier en cours (commençant à 0). La va-
              leur 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 fi-
              chier 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  adres-
              sable 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 ex-
              tra 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 com-
          mande. Notez que cela détermine la taille de bloc  physique  unique-
          ment 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 dispo-
          nible.

       •  Le pilote écrit les messages d'erreur sur la console et/ou  les  fi-
          chiers  de  journalisation (log). Les codes SENSE présents dans cer-
          tains messages sont automatiquement traduits en texte  si  les  mes-
          sages 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 infor-
       mations 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 Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>,  Thomas  Huriaux
       <thomas.huriaux@gmail.com>,  Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon  Paillard  <si-
       mon.paillard@resel.enst-bretagne.fr>,    Denis   Barbier   <barbier@de-
       bian.org>, David Prévot  <david@tilapin.org>,  Cédric  Boutillier  <ce-
       dric.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⟩.

Pages du manuel de Linux 6.03   5 février 2023                           st(4)

Generated by dwww version 1.15 on Sat Jun 29 01:38:30 CEST 2024.