Provided by: manpages-es_4.27.0-1_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 asignados 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  alíneació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. A partir de Linux 4.6, un valor negativo de mt_count define  el  tamaño
              de  la  partición 0 siendo el resto de la cinta la partición 1. El orden físico de las particiones
              depende del disco.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 de Linux). 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 de Linux, 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 archivo (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  contra  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 ½ pulgadas 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 las versiones 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

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

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

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

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

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

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

Páginas de Manual de Linux 6.9.1                   2 Mayo 2024                                             st(4)