Provided by: manpages-es_4.15.0-9_all bug

NOMBRE

       st - dispositivo de cinta magnética SCSI

SINOPSIS

       #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);

DESCRIPCIÓN

       El  controlador  (driver)  st proporciona la interfaz para una variedad de dispositivos de
       cinta magnética SCSI. Actualmente, toma el control de todos los dispositivos detectados de
       tipo “acceso secuencial”. El controlador st emplea el número mayor de dispositivo 9.

       Cada  dispositivo utiliza ocho números menores de dispositivo. Los cinco bits más bajos en
       los números menores se asignan secuencialmente en el orden  en  que  se  detectan.  En  la
       versión  2.6  del núcleo, los bits por encima de los 8 menores se unen a los cinco menores
       para formar el número de la cinta. Los números menores se pueden agrupar en dos  conjuntos
       de cuatro números: los números menores de dispositivo (con autorebobinado) principales, n,
       y los números de dispositivo “sin rebobinado”, (n+128). A los  dispositivos  abiertos  que
       utilicen  el  número  de  dispositivo  principal se les enviará una orden REWIND cuando se
       cierren.  A  los  dispositivos  abiertos  que  utilicen  el  número  de  dispositivo  “sin
       rebobinado”  no  se  les  enviará  esa  orden.  (Dese  cuenta  que usar un dispositivo con
       autorebobinado para posicionar la cinta con, por  ejemplo,  mt  no  produce  el  resultado
       deseado:  la  cinta se rebobina después de la orden mt y la orden siguiente comienza desde
       el principio de la cinta).

       Dentro de cada grupo, hay disponibles cuatro números menores para definir dispositivos con
       diferentes  características  (tamaño  de  bloque,  compresión,  densidad, etc.). Cuando el
       sistema arranca, sólo está disponible el primer dispositivo. Los  otros  tres  se  activan
       cuando  se  definen  las  carcterísticas  por  defecto  (ver  más  abajo).  (Cambiando las
       constantes en tiempo de compilación, es posible cambiar  el  equilibrio  entre  el  número
       máximo de unidades de cinta y el número de números menores para cada unidad. La asignación
       por defecto permite controlar 32 dispositivos de cinta. Por ejemplo, es posible  controlar
       hasta 64 unidades de cinta con 2 números menores para diferentes opciones).

       Normalmente los dispositivos se crean con:

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

       No existe el dispositivo de bloque correspondiente.

       El  controlador  usa  un  buffer  interno que tiene que ser lo suficientemente grande para
       contener, al menos, un bloque de la cinta. En los núcleos anteriores al 2.1.121, el buffer
       se  reserva  como  un  bloque  contiguo.  Esto  limita el tamaño de bloque al mayor bloque
       contiguo de memoria que el código de asignación de memoria del núcleo puede  proporcionar.
       Actualmente,  el  límite  es  de  128 kB  para  arquitecturas  de  32  bits  y 256 kB para
       arquitecturas de 64 bits. En núcleos posteriores  el  controlador  reserva  el  buffer  en
       varias  partes  si  es  necesario.  Por defecto, el número máximo de partes es de 16. Esto
       significa que el tamaño máximo de bloques es muy grande (2 MB si es posible una asignación
       de 16 bloques de 128 kB).

       El  tamaño  del buffer interno del controlador viene determinado por una constante durante
       la compilación que se puede modificar con una opción de inicio del núcleo. Aparte de esto,
       el  controlador  intenta  reservar  un  buffer temporal mayor en tiempo de ejecución si es
       necesario. Sin embargo, la asignación en tiempo de ejecución de grandes bloques  contiguos
       de memoria puede fallar y es aconsejable no confiar demasiado en la asignación dinámica de
       buffers con núcleos anteriores al 2.1.121 (esto se aplica también a la carga  por  demanda
       del controlador con kerneld o kmod).

       El  controlador  no  soporta  específicamente  ninguna  marca o modelo de unidad de cinta.
       Después del arranque del sistema se definen las opciones de los dispositivos  de  cinta  a
       partir  del  firmware de la unidad. Por ejemplo, si el firmware de la unidad selecciona un
       modo de bloque fijo, el dispositivo de cinta usa el modo de bloque fijo. Las  opciones  se
       pueden  cambiar  con  llamadas  explícitas  a  ioctl(2)  y  permanecen  activas  cuando el
       dispositivo se cierra y se vuelve a abrir. La configuración de las opciones  afecta  tanto
       al dispositivo con auto-rebobinado como sin rebobinado.

       Se  pueden  indicar diferentes opciones para los diferentes dispositos dentro del subgrupo
       de cuatro. Las opciones entran en vigor cuando el dispositivo se  abre.  Por  ejemplo,  el
       administrador  del sistema puede definir un dispositivo que escribe en modo de bloque fijo
       con un tamaño de bloque concreto y otro que escribe en modo  de  bloque  variable  (si  la
       unidad de cinta soporta ambos modos).

       El  controlador  puede trabajar con particiones de cinta si la unidad puede hacerlo. (Dese
       cuenta que las particiones de cinta no tienen nada que ver con las particiones  de  disco.
       Una  cinta particionada se puede ver como varias cintas lógicas dentro de un mismo medio).
       El soporte de particiones se debe habilitar con ioctl(2). La posición de cinta se conserva
       dentro  de  cada  partición  durante los cambios de partición. La partición usada para las
       operaciones de cinta subsiguientes se selecciona con ioctl(2). El cambio de  partición  se
       ejecuta  junto  con  la  siguiente  operación  de  cinta  para evitar movimientos de cinta
       innecesarios. El número máximo de particiones en una cinta es definido por  una  constante
       en  tiempo  de compilación (originalmente cuatro). El controlador contiene un ioctl(2) que
       puede formatear una cinta con una o dos particiones.

       El dispositivo /dev/tape se  crea  normalmente  como  un  enlace  físico  o  simbólico  al
       dispositivo de cinta predeterminado en el sistema.

       A  partir  de  la  versión  2.6.2 del núcleo, el controlador realiza la exportación de los
       dispositivos conectados y algunos parámetros asignacios a ellos en  el  directorios  sysfs
       /sys/class/scsi_tape

   Transferencia de datos
       El  controlador  soporta  tanto  el  funcionamiento en modo de bloque fijo como en modo de
       bloque variable (si la unidad lo soporta). En el modo de bloque  fijo  la  unidad  escribe
       bloques  del  tamaño especificado y el tamaño de bloque no depende de la cantidad de bytes
       de las llamadas al sistema de escritura. En el modo  de  bloque  variable  se  escribe  un
       bloque  de  cinta  para cada llamada de escritura y el número de bytes determina el tamaño
       del bloque de cinta correspondiente. Dese cuenta que los bloques en la cinta no  contienen
       ninguna información sobre el modo de escritura: cuando se lee, lo único importante es usar
       órdenes que acepten los tamaños de los bloques en la cinta.

       En el modo de bloque  variable  la  cantidad  de  bytes  leídos  no  tiene  que  coincidir
       exactamente  con  el tamaño de bloque de la cinta. Si la cantidad de bytes es mayor que el
       siguiente bloque de la cinta, el controlador devuelve los datos y la función  devuelve  el
       tamaño  real de bloque. Si el tamaño de bloque es mayor que la cantidad de bytes, se emite
       un mensaje de error.

       En el modo de bloque fijo, la cantidad de bytes a leer puede ser arbitraria si se habilita
       el uso de buffers, o un múltiplo del tamaño de bloque de la cinta si se deshabilita el uso
       de buffers. Los núcleos anteriores al 2.1.121 permiten escrituras con cantidades de  bytes
       arbitrarias si se habilita el uso de buffers. En todos los otros casos (un núcleo anterior
       al 2.1.121 con uso de buffers deshabilitado o un núcleo nuevo)  la  cantidad  de  bytes  a
       escribir debe ser un múltiplo del tamaño de bloque de la cinta.

       En  la versión 2.6 del núcleo, el controlador intentará usar transferencias directas entre
       el buffer y el dispositivo. Si esto no  es  posible,  se  emplea  el  buffer  interno  del
       controlador.  El  hecho  de  no  poder emplear transferencias directas puede deberse a una
       alineación incorrecta del buffer del usuario (configurado en 512 bytes por defecto pero el
       controlador  HBA  puede  modificarlo),  a que una o más páginas del buffer del usuario sea
       inaccesibles por parte del adaptador SCSI, etc...

       Automáticamente se escribe una marca de fichero en la cinta  si  la  última  operación  de
       cinta antes de cerrar era un escritura.

       Cuando  se  encuentra  una  marca de fichero durante las lecturas, ocurre lo siguiente. Si
       quedan datos en el buffer cuando se encuentra la marca de fichero, se devuelven los  datos
       del  buffer.  La  próxima lectura devuelve cero bytes. La siguiente lectura devuelve datos
       del siguiente fichero. El final de los datos grabados se  indica  devolviendo  cero  bytes
       para dos lecturas consecutivas. La tercera lectura devuelve un error.

   Ioctls
       El  controlador  admite  tres  peticiones  ioctl(2).  Las peticiones no reconocidas por el
       controlador  st  se  pasan  al  controlador  SCSI.  Las  definiciones  de  abajo  son   de
       /usr/include/linux/mtio.h:

   MTIOCTOP  Efectuar una operación en la cinta
       Esta  petición  toma  un argumento de tipo (struct mtop *). No todas las unidades de cinta
       admiten todas las operaciones. El controlador retorna un error EIO si  la  unidad  rechaza
       una operación.

           /* Estructura para MTIOCTOP - orden de op. de cinta mag.: */
           struct mtop {
               short   mt_op;       /* operationes definidas abajo */
               int     mt_count;    /* cuántas de ellas */
           };

       Operaciones de Cinta Magnética para el uso normal de una cinta:

       MTBSF  Espacio atrás sobre mt_count marcas de archivo.

       MTBSFM Espacio atrás sobre mt_count marcas de fichero. Reposiciona la cinta a la parte EOT
              de la última marca de fichero.

       MTBSR  Espacio atrás sobre mt_count registros (bloques de cinta).

       MTBSS  Espacio atrás sobre mt_count marcas de conjunto.

       MTCOMPRESSION
              Habilita la compresión de los datos de la cinta dentro de la unidad si mt_count  no
              es  cero  y  deshabilita  la compresión si mt_count es cero. Esta orden usa el MODO
              página 15 (`MODE page 15') soportado por la mayoría de DATs.

       MTEOM  Ir al fin del material grabado (para añadir ficheros).

       MTERASE
              Borra la cinta. En núcleos 2.6, se hará un borrado breve (simplemente  marcando  la
              cinta  como  vacía)  si  el  argumento  es cero. En cualquier otro caso, se hace un
              borrado largo (borrar todo).

       MTFSF  Espacio atrás sobre mt_count marcas de archivo.

       MTFSFM Espacio atrás sobre mt_count marcas de fichero. Reposiciona la cinta a la parte BOT
              de la última marca de fichero.

       MTFSR  Espacio atrás sobre mt_count registros (bloques de cinta).

       MTFSS  Espacio atrás sobre mt_count marcas de conjunto.

       MTLOAD Ejecuta  la  orden  SCSI  de  carga.  Se  dispone  de un caso especial para algunos
              autocargadores HP. Si mt_count es la constante MT_ST_HPLOADER_OFFSET más un número,
              el número se envia a la unidad para controlar al autocargador.

       MTLOCK Bloquea la tapa de la unidad de cinta.

       MTMKPART
              Formatea  la  cinta en una o dos particiones. Si mt_count es positivo, da el tamaño
              de la primera partición y la segunda partición contiene el resto de  la  cinta.  Si
              mt_count  es  cero,  la  cinta  se  formatea  en  una partición. Esta orden no está
              permitida para una unidad a menos que se habilite el soporte de particiones para la
              unidad (consulte MT_ST_CAN_PARTITIONS más adelante).

       MTNOP  No  op.—vuelca  el  búfer  del controlador como efecto colateral. Debería emplearse
              antes de leer el estado con MTIOCGET.

       MTOFFL Rebobina y apaga la unidad.

       MTRESET
              Pone la unidad en el estado inicial.

       MTRETEN
              Retensiona la cinta.

       MTREW  Rebobina.

       MTSEEK Busca y va al número de bloque especificado en mt_count.  Esta  operación  requiere
              bien  una  unidad  SCSI-2  que  admita  la  orden  LOCATE (dirección específica del
              dispositivo), bien una unidad SCSI-1 compatible  con  Tandberg  (Tandberg,  Archive
              Viper, Wangtek, ... ). El número de bloque debería ser uno previamente devuelto por
              MTIOCPOS si se utilizan direcciones específicas del dispositivo.

       MTSETBLK
              Establece la longitud de bloque de la unidad al valor especificado en mt_count. Una
              longitud de bloque cero pone la unidad en modo de tamaño de bloque variable.

       MTSETDENSITY
              Pone  la  densidad de la cinta según el código en mt_count. Los códigos de densidad
              soportados por una unidad se pueden encontrar en la documentación de la unidad.

       MTSETPART
              La partición activa se cambia a mt_count. Las particiones se numeran  a  partir  de
              cero.  Esta  orden no se permite para una unidad a menos que se habilite el soporte
              de particiones para la unidad (ver MT_ST_CAN_PARTITIONS más abajo).

       MTUNLOAD
              Ejecuta la orden SCSI de descarga (no expulsa la cinta).

       MTUNLOCK
              Desbloquea la tapa de la unidad de cinta.

       MTWEOF Escribe mt_count marcas de archivo.

       MTWSM  Escribe mt_count marcas de conjunto.

       Operaciones de Cinta Magnética para configurar las opciones del  dispositivo  (a  realizar
       por el administrador):

       MTSETDRVBUFFER
              Establece  varias opciones de la unidad y el controlador según los bits codificados
              en mt_count. Éstas consisten en el modo de uso de  buffers  de  la  unidad,  varias
              opciones  booleanas del controlador, el umbral de escritura del buffer, valores por
              defecto del tamaño de bloque y de densidad y plazos de tiempo (sólo a partir de  la
              versión  2.1  del núcleo). Una única operación puede afectar a un único elemento de
              la lista de debajo (los booleanos cuentan como un elemento).

              Un valor que tenga ceros en los 4 bits más altos se  empleará  para  establecer  el
              modo de tamponamiento de la unidad. Los modos de tamponamiento son:

                   0   La  unidad  no informará del estado GOOD en órdenes de escritura hasta que
                       los bloques de datos se escriban realmente en el material magnético.

                   1   La unidad puede devolver un estado GOOD en órdenes de escritura tan pronto
                       como todos los datos se hayan transferido al búfer interno de la unidad.

                   2   La unidad puede devolver un estado GOOD en órdenes de escritura tan pronto
                       como (a) todos los  datos  se  hayan  transferido  al  búfer  interno  del
                       controlador, y (b) todos los datos en búferes, provinientes de iniciadores
                       diferentes, hayan sido bien escritos en el material magnético.

              Para controlar el umbral de  escritura,  el  valor  en  mt_count  debe  incluir  la
              constante  MT_ST_WRITE_THRESHOLD aplicándole el operador de bits O inclusivo con un
              número de bloque en los 28 bits de más bajo orden. El número de bloque se refiere a
              bloques  de  1024  bytes,  no  al tamaño de bloque físico de la cinta. El umbral no
              puede exceder el tamaño del búfer interno  del  controlador  (consulte  DESCRIPCIÓN
              anteriormente).

              Para  activar y desactivar las opciones booleanas el valor en mt_count debe incluir
              una de las  constantes  MT_ST_BOOLEANS,  MT_ST_SETBOOLEANS,  MT_ST_CLEARBOOLEANS  o
              MT_ST_BOOLEANS  operada  con  un  O  lógico inclusivo a nivel de bits con cualquier
              combinación de las siguientes opciones, según se desee.  Usando  MT_ST_BOOLEANS  se
              pueden  asignar  a las opciones los valores definidos en los bits correspondientes.
              Con MT_ST_SETBOOLEANS se pueden  configurar  las  opciones  de  forma  selectiva  y
              selectivamente borradas con MT_ST_DEFBOOLEANS.

              Las   opciones  por  defecto  para  un  dispositivo  de  cinta  se  configuran  con
              MT_ST_DEFBOOLEANS. Un dispositivo de cinta no activo (por ejemplo,  un  dispositivo
              con número menor 32 o 160) se activa cuando sus opciones por defecto se definen por
              primera vez. Un dispositivo activado herenda del dispositivo  activado  durante  el
              arranque las opciones no configuradas explícitamente.

              Las opciones booleanas son:

              MT_ST_BUFFER_WRITES (Por omisión: verdad)
                     Todas  las  operaciones  de  escritura van a través de búferes en el modo de
                     bloque fijo. Si esta opción es falsa y la unidad emplea un tamaño de  bloque
                     fijo,  entonces todas las operaciones de escritura deben ser un múltiplo del
                     tamaño de  bloque.  Esta  opción  debe  ponerse  como  falsa  para  escribir
                     confiablemente archivos multivolúmenes.

              MT_ST_ASYNC_WRITES (Por omisión: verdad)
                     Cuando  esta  opción  es  verdad,  las  operaciones  de  escritura  regresan
                     inmediatamente sin esperar que los datos se transfieran a la unidad  si  los
                     datos  caben  en  el búfer del controlador. El umbral de escritura determina
                     cuán lleno debe estar el búfer antes  de  que  se  dé  una  nueva  orden  de
                     escritura  SCSI.  Cualquier  error  devuelto  por  la unidad se mantendrá en
                     espera hasta la siguiente operación. Esta opción  debe  ponerse  como  falsa
                     para escribir confiablemente archivos multivolúmenes.

              MT_ST_READ_AHEAD (Por omisión: verdad)
                     Esta  opción hace que el controlador proporcione un búfer para la lectura, y
                     lectura por adelantado en el modo de bloque fijo. Si esta opción es falsa  y
                     la unidad emplea un tamaño de bloque fijo, entonces todas las operaciones de
                     lectura deben ser para un múltiplo del tamaño de bloque.

              MT_ST_TWO_FM (Por omisión: falso)
                     Esta opción modifica el comportamiento del controlador cuando un fichero  se
                     cierra.  La  acción  normal  es  escribir una simlpe marca de fichero. Si la
                     opción es verdad el controlador escribirá dos marcas de fichero  y  hará  un
                     espacio atrás sobre el segundo.

                     Nota:  Esta  opción  no  debería ponerse a verdad para unidades de cinta QIC
                     puesto que son incapaces  de  sobreescribir  una  marca  de  fichero.  Estas
                     unidades detectan el fin de datos grabados mirando si hay cinta en blanco en
                     vez de dos marcas de fichero consecutivas. La mayoría de las otras  unidades
                     actuales  también  detectan  el  final de los datos grabados y el uso de dos
                     marcas de fichero es normalmente necesario sólo al intercambiar  cintas  con
                     algunos otros sistemas.

              MT_ST_DEBUGGING (Por omisión: falso)
                     Esta  opción  activa  varios mensajes de depuración del controlador (sólo es
                     efectiva si se compiló la unidad con DEBUG definida a un valor no cero).

              MT_ST_FAST_EOM (Por omisión: falso)
                     Esta opción hace que la operación MTEOM se envíe directamente a  la  unidad,
                     acelerando  potencialmente  la  operación  pero  haciendo que el controlador
                     pierda la pista del número de fichero en curso normalmente devuelto  por  la
                     petición  MTIOCGET.  Si  MT_ST_FAST_EOM es falso el controlador responderá a
                     una petición MTEOM saltando hacia adelante sobre los ficheros.

              MT_ST_AUTO_LOCK (Por omisión: falso)
                     Cuando esta opción es verdadera, la tapa de la unidad se bloquea  cuando  se
                     abre el dispositivo y se desbloquea cuando se cierra.

              MT_ST_DEF_WRITES (Por omisión: falso)
                     Las  opciones  de  cinta  (tamaño  de bloque, modo, compresión, etc.) pueden
                     cambiar al cambiar de un dispositivo ligado a una unidad a otro  dispositivo
                     ligado  a  la  misma unidad dependiendo de cómo se definan los dispositivos.
                     Esta opción define cuándo es el controlador el que fuerza los cambios usando
                     órdenes  SCSI y cúando se confía en las capacidades del autodetección de las
                     unidades. Si esta opción  es  falsa,  el  controlador  envía  inmediatamente
                     órdenes  SCSI cuando se cambia el dispositivo. Si la opción es verdad, no se
                     envían órdenes SCSI hasta que se solicite una escritura.  En  este  caso  se
                     permite  al firmware de la unidad detectar la estructura de la cinta al leer
                     y sólo se usan las órdenes SCSI para asegurarse de que una cinta se  escribe
                     según la especificación correcta.

              MT_ST_CAN_BSR (Por omisión: falso)
                     Algunas  veces,  cuando  se  usa lectura por adelantado, se debe retrocer la
                     cinta a la posición correcta cuando se cierra el dispositivo  y,  para  este
                     propósito,  se  utiliza  la  orden  SCSI  para retrocer sobre los registros.
                     Algunas unidades más antiguas no pueden procesar esta orden de manera fiable
                     y  se puede usar esta opción para mandar al controlador no usar la orden. El
                     resultado final es que, con lectura por adelantado y el modo de bloque fijo,
                     la  cinta  podría  no  estar  correctamente posicionada dentro de un archivo
                     cuando el dispositivo se cierra. En la versión 2.6 del núcleo,  por  defecto
                     es verdadero para discos con soporte para SCSI-3.

              MT_ST_NO_BLKLIMS (Por omisión: falso)
                     Algunas unidades no aceptan la orden SCSI READ BLOCK LIMITS. Si se usa esto,
                     el controlador no usará la orden. El inconveniente es que el controlador  no
                     puede  comprobar antes de enviar órdenes si el tamaño de bloque seleccionado
                     es aceptable por la unidad.

              MT_ST_CAN_PARTITIONS (Por omisión: falso)
                     Esta opción habilita el soporte de varias particiones dentro de  una  cinta.
                     La opción se aplica a todos los dispositivos ligados a la unidad.

              MT_ST_SCSI2LOGICAL (Por omisión: falso)
                     Esta  opción obliga al controlador a usar las direcciones lógicas de bloques
                     definidas en  el  estándar  SCSI-2  al  realizar  la  búsqueda  y  comunicar
                     operaciones  (tanto  con  la  órden MTSEEK como con MTIOCPOS y al cambiar la
                     partición de la cinta). En otro caso, se usan  las  direcciones  específicas
                     del  dispositivo.  Es  muy  recomendable  activar  esta  opción si la unidad
                     soporta direcciones lógicas ya que también cuentan marcas  de  fichero.  Hay
                     algunos dispositivos que sólo soportan direcciones lógicas de bloque.

              MT_ST_SYSV (Por omisión: falso)
                     Cuando  se habilita esta opción, los dispositivos de cinta usan la semántica
                     de System V. En caso contrario, se usa la semántica BSD. La  diferencia  más
                     importante  entre  ambas  semánticas  es  qué  ocurre  cuando un dispositivo
                     utilizado para lectura se cierra: en la  semántica  System  V  la  cinta  se
                     avanza  hasta  pasar la siguiente marca de fichero si esto no ha ocurrido ya
                     al usar el dispositivo. En la semántica BSD  la  posición  de  la  cinta  no
                     cambia.

              MT_NO_WAIT (Por omisión: falso)
                     Activa  el  modo  inmediato para algunas órdenes. Esto es que no espera a su
                     finalizacion (por ejemplo: el rebobinado).

              Un ejemplo:

                  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);

              El tamaño de bloque por  defecto  para  un  dispositivo  se  puede  configurar  con
              MT_ST_DEF_BLKSIZE  y  el  código  de  densidad  por defecto se puede configurar con
              MT_ST_DEFDENSITY. Los valores para los parámetros se operan con un O lógico con  el
              código de operación.

              Con  los núcleos 2.1.x y posteriores, los valores de los plazos de tiempo (timeout)
              se pueden configurar con la suborden MT_ST_SET_TIMEOUT operado con un O lógico  con
              el  plazo  de  tiempo  en  segundos.  El  plazo  largo  de  tiempo  (usado para los
              rebobinados y otras órdenes que pueden tardar mucho tiempo) se puede configurar con
              MT_ST_SET_LONG_TIMEOUT.  Los  valores  por  defecto del núcleo son muy grandes para
              asegurarse de que una órden exitosa no será cancelada para ninguna unidad. Debido a
              esto, el controlador puede parecer atascado aun cuando sólo esté esperando a que se
              cumpla el plazo de tiempo. Estas órdenes se pueden usar para configurar más valores
              útiles  para  una  unidad  específica.  Los  plazos  de tiempo configurados para un
              dispostivo se aplican a todos los dispositivos ligados a la misma unidad.

              A partir de las versiones 2.4.19 y 2.5.43 del núcleo, el controlador incluye un bit
              de  estado  que indica si la unidad necesita ser limpiada. El método que usará para
              transmitir información sobre su limpieza se define  mediante  la  orden  secundaria
              MT_ST_SEL_CLN. Si su valor es cero, el bit de limpieza siempre estará a cero. Si el
              valor es uno, se emplea TapeAlert definido en  el  standard  SCSI-3  (pendiente  de
              implementar). Los valores 2–17 están reservados. Si los menores 8 bits son >=18, se
              emplean bits de la extesión sense. Los bits 9–16 definen una máscara que define los
              bits  a  mirar  y los bits 17–23 definen el patrón de bits que debe buscarse. Si el
              patrón es cero, uno o más bits  dentro  de  la  máscara  indican  una  petición  de
              limpieza.  Si  el  patrón  es  distinto  de  cero, debe concordar con el byte de la
              máscara sense.

   MTIOCGET  obtiene el estado
       Esta petición toma un argumento de tipo (struct mtget *).

           /* estructura para MTIOCGET - orden estado de cinta mag */
           struct mtget {
               long     mt_type;
               long     mt_resid;
               /* los ss. registros son dependientes del dispositivo */
               long     mt_dsreg;
               long     mt_gstat;
               long     mt_erreg;
               /* Los ss. 2 campos no se usan siempre */
               daddr_t  mt_fileno;
               daddr_t  mt_blkno;
           };

       mt_type
              El fichero de cabecera define muchos valores  para  mt_type,  pero  el  controlador
              actual  informa  sólo  de  los tipos genéricos MT_ISSCSI1 (cinta genérica SCSI-1) y
              MT_ISSCSI2 (cinta genérica SCSI-2).

       mt_resid
              contiene el número de partición actual de la cinta.

       mt_dsreg
              informa de los valores actuales de la unidad para el tamaño de bloque  (en  los  24
              bits  más  bajos)  y para la densidad (en los 8 bits más altos). Estos campos están
              definidos  por  MT_ST_BLKSIZE_SHIFT,  MT_ST_BLKSIZE_MASK,   MT_ST_DENSITY_SHIFT   y
              MT_ST_DENSITY_MASK.

       mt_gstat
              da  información  de  estado genérica (independiente del dispositivo). El fichero de
              cabecera define macros para comprobar estos bits de estado:

              GMT_EOF(x): La cinta está posicionada justo tras  una  marca  de  fichero  (siempre
                  falso tras una operación MTSEEK).

              GMT_BOT(x):  La  cinta  está  posicionada  al principio del primer fichero (siempre
                  falso tras una operación MTSEEK).

              GMT_EOT(x): Una operación de cinta ha alcanzado el Final de Cinta físico.

              GMT_SM(x): La cinta está posicionada actualmente en una marca de conjunto  (siempre
                  falso tras una operación MTSEEK).

              GMT_EOD(x): La cinta está posicionada al final de datos grabados.

              GMT_WR_PROT(x):  La  unidad está protegida de escritura. Para algunas unidades esto
                  también puede significar que no admite escribir en  el  tipo  de  medio  físico
                  actual.

              GMT_ONLINE(x):  El último open(2) encontró a la unidad con una cinta puesta y lista
                  para la operación.

              GMT_D_6250(x), GMT_D_1600(x), GMT_D_800(x): Esta información de  estado  “genérica”
                  informa  de  la  densidad  actual  para  unidades  de cinta de 9 pistas y ½ in.
                  solamente.

              GMT_DR_OPEN(x): La unidad no tiene una cinta puesta.

              GMT_IM_REP_EN(x): Modo de informe inmediato. Este bit se activa si no hay garantías
                  de  que los datos se hayan escrito físicamente en la cinta cuando la llamada de
                  escritura termina. Se le asigna el valor cero sólo cuando el controlador no usa
                  buffers  para  los  datos  y la unidad no está configurada para usar buffers de
                  datos.

              GMT_CLN(x): La unidad necesita ser limpiada. Implementado a partir de las versiones
                  2.4.19 y 2.5.43 del núcleo.

       mt_erreg
              El  único  campo definido en mt_erreg es el número de errores recuperados en los 16
              bits  de   más   bajo   orden   (como   se   define   por   MT_ST_SOFTERR_SHIFT   y
              MT_ST_SOFTERR_MASK).  Debido  a  inconsistencias  en  la  forma en que las unidades
              informan de errores recuperados, este número a menudo no es mantenido  (la  mayoría
              de  las  unidades  no  informan,  por  defecto, de errores leves pero esto se puede
              cambiar con una orden SCSI MODE SELECT).

       mt_fileno
              devuelve el número de fichero actual (empezando por cero). Este valor se pone a  -1
              cuando el número de fichero se desconoce (p. ej. después de MTBSS o MTSEEK).

       mt_blkno
              da  el  número de bloque (empezando por cero) dentro del fichero actual. Este valor
              se pone a -1 cuando el número de bloque se desconoce  (p.  ej.  después  de  MTBSF,
              MTBSS o MTSEEK).

   MTIOCPOS  obtener la posición en la cinta
       Esta petición toma un argumento de tipo (struct mtpos *) y devuelve la noción que tiene el
       controlador del número de bloque de cinta actual, que no es el mismo que mt_blkno devuelto
       por  MTIOCGET.  Esta  unidad debe ser de tipo SCSI-2 y debe admitir la orden READ POSITION
       (dirección específica del dispositivo) o una unidad SCSI-1 compatible Tandberg  (Tandberg,
       Archive Viper, Wangtek, ... ).

           /* estructura para MTIOCPOS - orden obtener posición cinta mag. */
           struct mtpos {
               long mt_blkno;    /* número de bloque en curso */
           };

VALOR DEVUELTO

       EACCES Se  intentó escribir o borrar una cinta protegida para escritura. (Este error no se
              detecta durante open(2).)

       EBUSY  El dispositivo ya está en uso o el controlador  ha  sido  incapaz  de  reservar  un
              búfer.

       EFAULT Los parámetros de la orden apuntan a memoria que no pertenece al proceso invocador.

       EINVAL Una  llamada  a  ioctl(2)  tenía  un  argumento  incorrecto,  o el tamaño de bloque
              solicitado no era válido.

       EIO    La operación pedida no ha podido completarse.

       ENOMEM La cantidad de bytes contabilizados en read(2) es menor  que  el  siguiente  bloque
              físico  de la cinta. Antes de 2.2.18 y 2.4.0 los bytes adicionales se ignoraban sin
              más.

       ENOSPC Una operación de escritura no pudo completarse porque la cinta llegó al  final  del
              material magnético.

       ENOSYS ioctl(2) desconocido.

       ENXIO  Durante la apertura, el dispositivo de cinta no existe.

       EOVERFLOW
              Se  ha intentado leer o escribir un bloque de longitud variable que es mayor que el
              búfer interno del controlador.

       EROFS  Se ha intentado realizar una operación `open' con O_WRONLY o O_RDWR cuando la cinta
              de la unidad está protegida contra escritura.

ARCHIVOS

       /dev/st*
              dispositivos de cinta SCSI con autorebobinado

       /dev/nst*
              dispositivos de cinta SCSI sin rebobinado

NOTAS

       1.  Cuando  se  intercambian  datos  entre  sistemas, ambos sistemas deben coincidir en el
           tamaño físico del bloque de la  cinta.  Los  parámetros  de  una  unidad  después  del
           arranque  no  son,  con frecuencia, los que la mayoría de los sistemas operativos usan
           con estos dispositivos. La mayoría de los sistemas usan unidades  en  modo  de  bloque
           variable si la unidad soporta ese modo. Esto es aplicable a la mayoría de las unidades
           modernas, incluyendo DATs, unidades de recorrido helicoidal de 8mm, DLTs,  etc.  Puede
           ser  aconsejable  usar estas unidades en modo variable también en Linux (es decir, use
           MTSETBLK o MTSETDEFBLK en el arranque del sistema para establecer el modo),  al  menos
           cuando se intercambien datos con sistemas externos. El inconveniente de esto es que se
           debe usar un  tamaño  de  bloque  de  cinta  bastante  largo  para  obtener  tasas  de
           transferencia de datos aceptables sobre el bus SCSI.

       2.  Muchos  programas  (por  ejemplo, tar(1)) permiten al usuario especificar el tamaño de
           bloque en la línea de órdenes. Dese cuenta que esto determina  el  tamaño  físico  del
           bloque en la cinta sólo en el modo de bloque variable.

       3.  Para  usar unidades de cinta SCSI, el controlador básico de SCSI, el controlador de un
           adaptador SCSI y el controlador de cintas SCSI deben estar  bien  configurados  dentro
           del núcleo o cargados como módulos. Si el controlador de cintas SCSI no está presente,
           se reconoce la unidad pero el soporte  de  cinta  descrito  en  esta  página  no  está
           disponible.

       4.  El  controlador  escribe los mensajes de error a la consola/registro(log). Los códigos
           SENSE escritos en algunos mensajes se traducen automática a texto si se han habilitado
           en la configuración del núcleo los mensajes SCSI prolijos.

       5.  La gestión interna del buffer por parte del controlador permite buenos rendimientos en
           el modo de bloque fijo incluso con pequeñas cantidades de bytes de read(2) y write(2).
           Con  transferencias  directas,  no  es  posible  y  puede  originar alguna sorpresa al
           actualizarse a laversión 2.6 del núcleo. Para  evitar  esto,  se  debe  configurar  el
           software  para  usar  mayores  transferencias  (a menudo definiendo un mayor tamaño de
           bloque). Si esto no es posible, pueden desactivarse las transferencias directas.

VÉASE TAMBIÉN

       mt(1)

       El fichero drivers/scsi/README.st o  Documentation/scsi/st.txt  (núcleo  >=  2.6)  de  los
       fuentes   del   núcleo  contiene  la  información  más  reciente  del  controlador  y  sus
       posibilidades de configuración.

COLOFÓN

       Esta página es parte de la versión 5.13 del proyecto Linux man-pages. Puede encontrar  una
       descripción  del  proyecto, información sobre cómo informar errores y la última versión de
       esta página en https://www.kernel.org/doc/man-pages/.

TRADUCCIÓN

       La traducción al español de esta página del  manual  fue  creada  por  Gerardo  Aburruzaga
       García  <gerardo.aburruzaga@uca.es>,  Juan  Piernas  <piernas@ditec.um.es> y Marcos Fouces
       <marcos@debian.org>

       Esta traducción es documentación libre; lea  la  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  o posterior con respecto a las condiciones de
       copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta  página  del  manual,  envíe  un  correo
       electrónico a ⟨debian-l10n-spanish@lists.debian.org⟩.