Provided by: manpages-pt_20040726-5_all bug

NOME

       st - Dispositivo de Fita SCSI

SINOPSE

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

DESCRIÇÃO

       O driver st provê a interface para vários dispositivos de fita SCSI.  Atualmente, o driver
       controla todos os dispositivos detetados do tipo “acesso-seqüencial.”  O driver st  usa  o
       número de dispositvo maior 9.

       Cada  dispositivo  usa  oito  números  menores.  Os  cinco bits de menor ordem nos números
       menores são atribuidos seqüencialmente na ordem em que são detetados. Os  números  menores
       podem  ser  agrupados  em  dois conjuntos de quatro números. os números menores principais
       (auto-rebobinamento), n, e  um  número  de  dispositivo  “sem  rebobinamento”  números  de
       dispositivo,  (n+  128).   Os  dispositivos  abertos usando o número principal receberão o
       comando REWIND que os rebobinará quando forem fechados.   Dispositivos  abertos  usando  o
       ”número  de  dispositvo“sem  rebobinamento.   (Observe que usando um dispositivo com auto-
       rebobinamento, ao posicionar a fita, por exemplo, o mt não dá o resultado desejado: a fita
       é rebobinada depois do comando mt e o próximo comando atua a partir do inicio da fita).

       Em  cada  grupo,  quatro  números  menores estão disponíveis para definir dispositivos com
       características diferentes (tamanho  do  bloco,  compressão,  densidade,  etc).  Quando  o
       sistema inicia, apenas o primeiro dispositivo está disponível. Os outros três são ativados
       quando as características padrões são definidas (veja abaixo).  (Alterando  as  constantes
       durante a compilação, é possível mudar o balanço entre o número máximo de unidades de fita
       e o número de menor número de dispositivo para cada unidade.  A  alocação  padrão  permite
       controlar 32 unidades de fita.  Por exemplo, é possível controlar até 64 unidades com dois
       números menores para diferentes opções).

       Os dispositivos são tipicamente criados por:
              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

       Não há dispositivos de bloco correspondentes.

       O driver usa um buffer interno que tem que ter espaço suficiente para manter no mínimo  um
       bloco  de  fita.  No Linux anterior ao 2.1.121, o buffer é alocado como um bloco contíguo.
       Isto limita o tamanho do bloco para o maior bloco contíguo de memória que o alocador  pode
       prover.   O  limite  atual  é  de  128kB  para  a  arquitetura  de  32 bits e 256kB para a
       arquitetura de 64 bits. Nas novas versões do Linux o  driver  aloca  o  buffer  em  várias
       partes  se  necessário.  Por  padrão, o número máximo de partes é 16. Isto significa que o
       tamanho máximo do bloco é muito grande (2 MB se alocado 16 blocos de 128kB).

       O tamanho do buffer interno do  driver  é  determinado  por  uma  constante  em  tempo  de
       compilação,  que  pode  ser sobrescrita com uma opção na inicialização do kernel do Linux.
       Em adição a isto, o driver tenta alocar um buffer temporário grande em tempo  de  execução
       se  necessário.  Porém,  a  alocação  em  tempo de execução de grandes blocos contíguos de
       memória pode falhar, portanto, não confie muito em alocação dinâmica de buffer em  versões
       anteriores a 2.1.121 (isto também se aplica em carga dinâmica de driver usando o kerneld e
       kmod).

       O driver não suporta especificamente qualquer marca ou modelo de unidade de  fita.  Depois
       que  o  sistema  inicia,  as  opções do dispositivo de fita são definidas pelo firmware da
       unidade. Por exemplo, se o firmware seleciona o modo de blocagem fixa, a unidade  de  fita
       usará  este modo. As opções podem ser alteradas com chamadas ioctl() explícitas e mantidas
       em efeito quando o dispositivo é fechado e reaberto.  As opções definidas afetam, tanto os
       dispositivos com auto-rebobinamento, quanto os sem rebobinamento.

       Opções  diferentes  podem  ser  especificadas  para  dispositivos diferentes, dentro de um
       subgrupo de quatro. As opções fazem efeito quanto o dispositivo é aberto. Por  exemplo,  o
       administrador  do  sistema  pode  definir um dispositivo que grava em blocos fixos com uma
       certa blocagem e outro que grava em blocos variáveis  (se  a  unidade  suportar  ambos  os
       modos).

       O driver suporta partições se a unidade de fita suportá-las. (As partições em fita não tem
       nada ver com as partições em disco. Uma fita particionada pode ser vista como várias fitas
       lógicas.) O suporte a partições tem que ser habilitado com um ioctl. A localização da fita
       é preservada em cada partição através das alterações na partição.  A partição  usada  para
       operações  subseqüentes,  é  selecionada  com  um ioctl. A mudança de partição é executada
       junto com a próxima operação para evitar movimento desnecessário da fita. O número  máximo
       de  partições um uma fita é definido por uma constante durante a compilação (originalmente
       quatro). O driver contém um ioctl que pode formatar uma fita com uma ou duas partições.

       O dispositivo /dev/tape é geralmente criado como um  vínculo  símbólico  ou  fixo  para  o
       dispositivo de fita padrão no sistema.

TRANSFERÊNCIA DE DADOS

       O  driver  suporta  operações  nos  modos  de  blocagem fixa e variável (se suportado pela
       unidade). No modo de blocagem fixa a unidade  grava  blocos  de  tamanho  específico  e  o
       tamanho  do  bloco não é dependente do contador de bytes gravados, usado pelas chamadas do
       sistema. No modo de blocagem variável, um bloco é gravado para cada chamada de gravação  e
       o  contador  de  bytes  determina  o  tamanho do bloco. Observe que os blocos na fita, não
       contém quaisquer informações sobre o mode de gravação.  Durante a leitura, o importante  é
       usar comandos que aceitam o tamanho dos blocos gravados.

       No  modo  variável,  o contador de bytes não precisa coincidir exatamente com o tamanho do
       bloco. Se o contador é maior do que o próximo bloco na fita, o driver retorna os dados e a
       função  retorna  o tamanho atual do bloco. Se o tamanho do bloco é maior do que o contador
       de bytes, a quantidade requisitada de dados é retornada a partir do inicio do  bloco  e  o
       resto é descartado.

       No  modo  fixo,  o  contador de bytes lidos pode ser arbitrário se o uso de buffer estiver
       habilitado ou um múltiplo do tamanho do bloco se o buffer estiver  desabilitado.  O  Linux
       antes  da  versão 2.1.121 permite gravação com um contador de byte arbitrário, se o buffer
       estiver habilitado. Em todos os casos, o  contador  de  bytes  de  gravados  deve  ser  um
       múltiplo do tamanho do bloco.

       Um  marcador  de  arquivo  é  automáticamente gravado na fita se a última operação na fita
       antes de fechá-la foi uma gravação.

       Quando um marcador de arquivo é encontrado enquanto lendo,  a  seguinte  é  comcluído.  Se
       houver  dados  no  buffer  quando  um  marcador de arquivo é encontrado, estes dados serão
       retornados. A próxima leitura retornará zero bytes. A leitura seguinte retornará os  dados
       do  próximo  arquivo.  O  fim  dos  dados gravados é sinalizado pelo retorno de zero bytes
       durante duas leituras consecutivas. A terceira leitura retornará um erro.

IOCTLS

       O driver suporta três requisitos ioctl.  Os requisitos não reconhecidos pelo driver st são
       passados para o driver SCSI As definições abaixo são do /usr/include/linux/mtio.h:

   MTIOCTOP - Executa uma operação de fita
       Este  requisito leva um argumento do tipo (struct mtop *).  Nem todos as unidades suportam
       todas as operações.  O driver retorna um erro EIO se a unidade rejeitar uma operação.

       /* Estrutura do MTIOCTOP - comando op de fita mag: */
       struct mtop {
           short  mt_op;    /* operações definidas abaixo */
           int    mt_count; /* quantidade delas */
       };

       Operações de fita magnéticas para uso normal:
       MTBSF         Retrocede espaços sobre mt_count marcadores de arquivos.
       MTBSFM        Retrocede espaços sobre mt_count marcadores de arquivos.  Reposiciona a fita
                     no lado EOT último marcador de arquivo.
       MTBSR         Retrocede espaços sobre mt_count registros (blocos da fita).
       MTBSS         Retrocede espaços sobre mt_count setmarks.
       MTCOMPRESSION Habilita  compressão  de  dados  se  mt_count  não  for  zero e desabilita a
                     compressão se mt_count é zero. Este comando usa o  MODO  page  15  suportado
                     pela maioria das fitas DATs.
       MTEOM         Vai para o final da mídia gravada (para acrescentar arquivos).
       MTERASE       Apaga a fita.
       MTFSF         Avança mt_count marcadores de arquivos.
       MTFSFM        Avança  mt_count  marcadores de arquivos.  Reposiciona a fita no lado BOT do
                     último marcado de arquivo.
       MTFSR         Avança espaços sobre mt_count registro (blocos da fita).
       MTFSS         Avança espaços sobre mt_count setmarks.
       MTLOAD        Executa o comando load SCSI. Um caso especial está  disponível  para  alguns
                     carregadores automáticos HP. Se mt_count é a constante MT_ST_HPLOADER_OFFSET
                     mais um número, o número  é  enviando  para  a  unidade  controlar  a  carga
                     automática.
       MTLOCK        Bloqueia a porta da unidade de fita.
       MTMKPART      Formata  a fita em uma ou duas partições. Se mt_count não for zero, ele dá o
                     tamanho da primeira partição e a segunda partição contém o resto da fita. Se
                     mt_count  for  zero, a fita é formatada com um partição.  Este comando não é
                     permitido em uma unidade a menos que o suporte  a  esteja  habilitado  (veja
                     MT_ST_CAN_PARTITIONS abaixo).
       MTNOP         Nenhuma  operação - descarrega o buffer do driver.  Ele pode ser usado antes
                     de ler o estado com MTIOCGET.
       MTOFFL        Rebobina a fita e coloca a unidade fora de linha.
       MTRESET       Reinicia a unidade.
       MTRETEN       Retensiona a fita.
       MTREW         Rebobina.
       MTSEEK        Posiciona no número de bloco especificado em mt_count.  Esta operação requer
                     uma  unidade  SCSI-2  que  suporte o comando LOCATE (endereço de dispositivo
                     específico) ou uma unidade  Tandberg-compatível  SCSI-1  (Tandberg,  Archive
                     Viper,  Wangtek,  ...  ).   O  número do bloco deverá ser aquele previamente
                     retornado pelo MTIOCPOS se o endereço específico do dispositivo foi usado.
       MTSETBLK      Define o tamanho do bloco para o valor especificado em mt_count.  Um tamanho
                     de zero define o modo de bloco de tamanho variável.
       MTSETDENSITY  Define  a  densidade  para  o  código  em  mt_count.   O código de densidade
                     suportado pela unidade pode ser encontrado na documentação da unidade.
       MTSETPART     A partição é alternada para mt_count .  As partições são numeradas a  partir
                     de  zero. Este comando não é permitido em uma unidade, a menos que o suporte
                     a partições esteja habilitado (veja MT_ST_CAN_PARTITIONS abaixo).
       MTUNLOAD      Executa o comando SCSI unload (não ejeta a fita).
       MTUNLOCK      Desbloqueia a porta da unidade de fita.
       MTWEOF        Grava mt_count marcadores de arquivos.
       MTWSM         Grava mt_count setmarks.

       Operações de Fita Magnética para configurar opções de dispositivo (superusuário):
       MTSETDRVBUFFER
               Define várias opções de driver e unidade de acordo  com  os  bits  codificados  em
               mt_count.  Isto consiste do modo de buferização da unidade, 13 opções Booleanas da
               unidade, os limites de gravação do buffer, padrões  para  o  tamanho  do  bloco  e
               densidade  e  limites  de tempo (apenas no Linux >= 2.1).  Uma operação simples só
               pode afetar um ítem na lista acima (as opções Booleanas contadas com um ítem.)

               Um valor zero nos 4 bits  de  alta  órdem  será  usado  para  definir  o  modo  de
               buferização da unidade de fita.  Os modos de buferização são:

                   0   A  unidade não informará o estado GOOD nos comandos de gravação até que os
                       blocos de dados sejam gravados na mídia.
                   1   A unidade informará o estado GOOD nos comandos de gravação assim que todos
                       os dados tenham sido transferidos do buffer interno da unidade.
                   2   A  unidade pode informar o estado GOOD nos comandos de gravação assim que:
                       (a) os dados foram transferido do buffer interno da unidade e (b) todos os
                       dados  em buffers de inicializadores diferentes foram gravados com sucesso
                       para a mídia.

               Para controlar o limite de gravação, o valor em mt_count deve incluir a  constante
               MT_ST_WRITE_THRESHOLD  logicamente  ORed  com  um  contador  de  bloco nos 28 bits
               inferiores.  O contador de bloco refere-se a blocos de 1024-byte e não ao  tamanho
               físico  dos  blocos  na  fita.   Os  limites não podem exceder o tamanho do buffer
               interno da unidade (veja DESCRIÇÃO, acima).

               Para definir e limpar as opções Booleanas o valor em mt_count deve incluir uma das
               constantes     MT_ST_BOOLEANS,     MT_ST_SETBOOLEANS,    MT_ST_CLEARBOOLEANS    ou
               MT_ST_DEFBOOLEANS logicamente ORed com qualquer combinação das opções a  seguir  é
               desejável.   Usando  MT_ST_BOOLEANS  as  opções  podem  ser definidas para valores
               definidos nos bits correspondentes. Com  MT_ST_SETBOOLEANS  as  opções  podem  ser
               seletivamente definidas e com MT_ST_DEFBOOLEANS seletivamente limpas.

               As   opções   padrões  para  um  dispositivo  de  fita  podem  ser  definidas  com
               MT_ST_DEFBOOLEANS. Um dispositivo de fita inativo (i.e., um dispositivo com número
               menor  32  ou  160)  é  ativado quando as opções padrões para ele são definidas na
               primeira vez. Um dispositivo ativado herda daquele  ativado  na  inicialização  as
               opções não definidas explicitamente.

               As opções Booleanas são:

               MT_ST_BUFFER_WRITES  (Padrão: true)
                      Coloca no buffer todas as operações de gravação usando a blocagem fixa.  Se
                      esta opção é false e a unidade usa um bloco de tamanho fixo, então todas as
                      operações  de  gravação  devem  usar um múltiplo do tamanho do bloco.  Esta
                      opção deve ser definida como falsa para se obter uma gravação confiável  em
                      sistemas multi-volumes.
               MT_ST_ASYNC_WRITES  (Padrão: true)
                      Quando   esta   opção   é   verdadejra,  a  operação  de  gravação  retorna
                      imediatamente sem esperar que os dados sejam transferidos para a unidade se
                      os dados estão ajustados dentro do buffer da unidade.  O limite de gravação
                      determina quando o buffer está cheio mas depois um novo comando de  escrita
                      SCSI  é  usado.  Quaisquer erros relatados pela unidade serão retidos até a
                      próxima operação.  Esta opção deve ser definida como falsa  para  se  obter
                      uma gravação confiável em sistemas multi-volumes.
               MT_ST_READ_AHEAD  (Padrão: true)
                      Esta  opção  faz  o  driver prover leitura buferizada e leitura a frente em
                      blocos fixos.  Se esta opção é false e a unidade usa um  tamanho  de  bloco
                      fixo,  todas  as  operações  de  leitura  devem ser múltiplos do tamanho do
                      bloco.
               MT_ST_TWO_FM  (Padrão: false)
                      Esta opção modifica as  características  do  driver  quando  um  arquivo  é
                      fechado.   A  ação  normal  é gravar uma marca de arquivo simples.  Se esta
                      opção é true o driver gravará duas marcas  de  arquivo  e  um  caracter  de
                      retrocesso sobre a última marca.

                      Nota:  Esta  opção  não pode ser true para unidades de fita QIC uma vez que
                      elas não podem sobrescrever a marca de arquivo.  Estas unidades  detetam  o
                      final  dos  dados gravados testando se a fita está em branco. A maioria das
                      unidades atuais também detetam o final dos dados gravados e o uso das  duas
                      marcas  de  arquivo são necessária apenas quando há intercambio de fita com
                      outros sistemas.

               MT_ST_DEBUGGING  (Padrão: false)
                      Esta opção ativa várias mensagens de depuração de erros do driver  (só  tem
                      efeito  se o driver foi compilado com DEBUG definido com valor diferente de
                      zero).
               MT_ST_FAST_EOM  (Padrão: false)
                      Esta  opção  envia  a  operação   MTEOM   diretamente   para   a   unidade,
                      potencialmente  acelera a operação, mas causa perda de trilhas do número de
                      arquivo  atual,  normalmente  retornado  pela  requisição   MTIOCGET.    Se
                      MT_ST_FAST_EOM  é false o driver responderá a um requisito MTEOM repassando
                      espaços sobre o arquivo.
               MT_ST_AUTO_LOCK (Padrão: false)
                      Quando esta opção  é  true,  a  porta  da  unidade  é  bloqueada  quando  o
                      dispositivo é aberto e desbloqueada quando ele é fechado.
               MT_ST_DEF_WRITES (Padrão: false)
                      As  opções  da  fita (tamanho do bloco, modo, compressão, etc.) pode variar
                      quando muda-se de um  dispositivo  vinculado  a  uma  unidade,  para  outro
                      vinculado  a  mesma  unidade  dependendo  de  como  os  dispositivos  estão
                      definidos. Esta opção define quando as mudanças são  forçadas  pelo  driver
                      através  de comandos SCSI e quando a unidade auto-deteta que as capacidades
                      são confiáveis. Se esta opção é false, o  driver  envia  os  comandos  SCSI
                      imediatamente  quando  o  dispositivo  é  alterado.  Se  a opção é true, os
                      comandos SCSI não são enviados até que uma gravação seja requisitada. Neste
                      caso  o  firmware da unidade tem permissão para detetar a estrutura da fita
                      durante a leitura e os comandos SCSI são usados apenas  para  certificar-se
                      que a fita é gravada de acordo com a especificação correta.
               MT_ST_CAN_BSR (Padrão: false)
                      Quando a leitura a frente é usada, a fita deve algumas vezes ser rebobinada
                      para a posição correta quando o dispositivo é fechado e o comando SCSI para
                      efetuar  esta  tarefa é usado. Algumas unidades antigas não podem processar
                      este comando confiavelmente e esta opção pode ser usada para instruir  o  a
                      não usá-lo. O resultado final é que, com leitura a frente e o modo de bloco
                      fixo, a fita não pode ser corretamente  posicionada  no  arquivo  quando  o
                      dispositivo é fechado.
               MT_ST_NO_BLKLIMS (Padrão: false)
                      Algumas  unidades  não  aceitam  o comando SCSI READ BLOCK LIMITS. Se ele é
                      usado, o driver não usá-o. A desvantagem é que o  driver  não  pode  checar
                      antes  de  enviar os comandos se o tamanho de bloco selecionado é aceitável
                      pela unidade de fita.
               MT_ST_CAN_PARTITIONS (Padrão: false)
                      Esta opção habilita o suporte a várias partições em uma fita.  Ela  aplica-
                      se a todos os dispositivos vinculados à unidade.
               MT_ST_SCSI2LOGICAL (Padrão: false)
                      Esta  opção  instrui o driver a usar o endereço lógico de bloco definido no
                      padrão SCSI-2 durante as operações de procura e ( com os comandos MTSEEK  e
                      MTIOCPOS  e  durante  alterações  na  partição).  Do  contrário  o endereço
                      específico do dispositivo é usado.  É altamente recomendável  definir  esta
                      opção  se a unidade suporta os endereços lógicos, porque eles também contam
                      as marcas de arquivo. Há algumas unidades que só suportam  o  endereçamento
                      lógico de bloco.
               MT_ST_SYSV (Padrão: false)
                      Quando  esta  opção  é habilitada, o dispositivo de fita usa a semântica do
                      SystemV. Do contrário a do BSD é usada. A diferença mais  importante  entre
                      as  semânticas  é o que acontece quando um dispositivo usado para leitura é
                      fechado: na semântica SYSV a fita  é  avançada  para  a  próxima  marca  de
                      arquivo  se a mesma não foi encontrada durante a utilização do dispositivo.
                      Na semântica BSD a posição da fita não se altera.
               EXEMPLO
                      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);

               O  tamanho  padrão  do  bloco  para  um  dispositivo   pode   ser   definido   com
               MT_ST_DEF_BLKSIZE  e  a  densidade  padrão com MT_ST_DEFDENSITY. Uma operação OU é
               executada entre os valores dos parâmetros e o código da operação.

               Com o Linux 2.1.x e posteriores, os limites de tempo podem  ser  definidos  com  o
               subcomando MT_ST_SET_TIMEOUT e um OU do tempo em segundos.  O limite longo  (usado
               para rebobinamento e outros comandos que levam muito tempo) pode ser definido  com
               MT_ST_SET_LONG_TIMEOUT.  O padrão do Linux é muito longo para certificar-se que um
               comando falhou por ter excedido o limite de tempo em qualquer unidade. Por isso  o
               driver  pode  parecer travar, mesmo que ele seja o único em espera. Estes comandos
               podem ser usados para definir valores mais práticos para unidades  específicas.  O
               limite  definido  para  um dispositivo, aplica-se a todos que estejam vinculados a
               mesma unidade.

   MTIOCGET - Obtém o estado
       Esta requisição leva um argumento do tipo (struct mtget *).

       /* estrutura para MTIOCGET - comando para obter o estado da fita */
       struct mtget {
           long   mt_type;
           long   mt_resid;
           /* os registradores abaixo são dependentes do dispositivo */
           long   mt_dsreg;
           long   mt_gstat;
           long   mt_erreg;
           /* Os dois campos a seguit nem sempre são usados */
           daddr_t          mt_fileno;
           daddr_t          mt_blkno;
       };

       mt_type    Arquivo cabeçalho define vários valores para mt_type, mas  o  driver  atual  só
                  informa os tipos genéricos MT_ISSCSI1 (Fita SCSI-1 genérica) e MT_ISSCSI2 (Fita
                  SCSI-2 genérica).
       mt_resid   contém o número da partição da fita atual.
       mt_dsreg   informa a definição de tamanho de bloco da unidade atual (nos 24 bits baixos) e
                  densidade   (nos   8   bits   altos).    Estes   campos   são   definidos   por
                  MT_ST_BLKSIZE_SHIFT,      MT_ST_BLKSIZE_MASK,       MT_ST_DENSITY_SHIFT       e
                  MT_ST_DENSITY_MASK.
       mt_gstat   dá  informações  genéricas  do estado (independente do dispositivo).  O arquivo
                  cabeçalho define macros para testar estes bits de estado:
                  GMT_EOF(x): A fita está posicionada após a marca de arquivo (sempre false  após
                      uma operação MTSEEK).
                  GMT_BOT(x): A fita está posicionada no inicio do primeiro arquivo (sempre false
                      após uma operação MTSEEK).
                  GMT_EOT(x): Uma operação da fita alcançou o final físico da Fita.
                  GMT_SM(x): A fita está posicionada na setmark (sempre false após  uma  operação
                      MTSEEK).
                  GMT_EOD(x): A fita está posicionada no final do dado gravado.
                  GMT_WR_PROT(x):  A  unidade  está  protegida  contra  gravação.   Para  algumas
                      unidades isto pode significar que a mesma  não  suporta  gravação  no  tipo
                      mídia atual.
                  GMT_ONLINE(x):  O  último  open()  encontrou  uma fita na unidade e pronta para
                      operação.
                  GMT_D_6250(x),  GMT_D_1600(x),  GMT_D_800(x):  Reporta  informações  de  estado
                      “genéricas”  sobre a densidade atual definida em 9-track enas para unidades
                      de fita de 12".
                  GMT_DR_OPEN(x): A unidade não contém uma fita.
                  GMT_IM_REP_EN(x): Modo de Informação Imediata. Este bit é definido  se  não  há
                      garantias  que  os  foram  fisicamente gravados na fita quando a chamada de
                      gravação retorna.  Ele é definido zero apenas quando o driver não  buferiza
                      os dados e a unidade está definida para não colocar os dados no buffer.
       mt_erreg   O  único  campo  definido em mt_erreg é o contador de erros recuperados, nos 16
                  bits   de    baixa    órdem    (como    definido    porMT_ST_SOFTERR_SHIFT    e
                  MT_ST_SOFTERR_MASK).   Devido  a  inconsistências  na  forma  como  as unidades
                  informam os erros recuperados, o  contador  freqüentemente  não  é  mantido  (a
                  maioria  das unidades não informam por padrão erros de programas, mas isto pode
                  ser alterado com o comando SCSI MODE SELECT).
       mt_fileno  Informa o número atual do arquivo (base-zero).  Este valor é -1 quando o número
                  do arquivo é desconhecido (i.e., depois de MTBSS ou MTSEEK).
       mt_blkno   Informa o número de bloco (base-zero) do arquivo atual.  Este valor é -1 quando
                  o número do bloco é desconhecido (i.e., depois de MTBSF, MTBSS, ou MTSEEK).

   MTIOCPOS - Obtém a posição da fita.
       Este requesito aceita um argumento do tipo (struct mtpos *) e informa a noção  da  unidade
       do  número  de bloco da fita atual, que não é o mesmo que mt_blkno retornado por MTIOCGET.
       A unidade deve ser uma SCSI-2 que suporte o comando READ POSITION (endereço específico  do
       dispositivo)  ou uma unidade SCSI-1 Tandberg-compatível (Tandberg, Archive Viper, Wangtek,
       ... ).

       /* estrutura para MTIOCPOS - comando para obter a posição da fita */
       struct     mtpos {
           long   mt_blkno; /* número do bloco atual */
       };

VALOR RETORNADO

       EIO           A operação solicitada não pode ser concluida.

       ENOSPC        Uma operação de gravação não pode ser concluida  porque  a  fita  chegou  no
                     final físico.

       EACCES        Tentando gravar ou apagar um fita com proteção a gravação.  (Este erro não é
                     detetado durante um open().)

       EFAULT        Os parâmetros do comando apontam para memória que não pertencem ao  processo
                     chamado.

       ENXIO         Durante a abertura o dispositivo de fita não existe.

       EBUSY         O dispositivo já está em uso ou o driver não conseguiu alocar um buffer.

       EOVERFLOW     Tentou  ler  ou  gravar  um  bloco  de tamanho variável que é maior do que o
                     buffer interno da unidade.

       EINVAL        Um ioctl() tem um argumento ilegal ou o tamanho do bloco requisita é ilegal.

       ENOSYS        ioctl() desconhecido.

       EROFS         Tentativa de abrir com O_WRONLY ou O_RDWR quando  a  fita  na  unidade  está
                     protegida contra gravação.

ARQUIVOS

       /dev/st*  : Dispositivo de fita SCSI com auto-rebobinamento
       /dev/nst* : Dispositivo de fita SCSI sem auto-rebobinamento

AUTOR

       O  driver  foi  escrito  por  Kai  Mäkisara  (Kai.Makisara@metla.fi) a partir de um driver
       escrito por Dwayne Forsyth. Várias outras pessoas também contribuiram com o driver.

VEJA TAMBÉM

       mt(1)

       O arquivo README.st nos fontes do Linux contém informações mais recentes sobre o driver  e
       suas possibilidades de configuração.

NOTAS

       1.  Quando trocar dados entre sistemas, ambos tem que usar o mesmo tamanho de bloco físico
       da fita. Os parâmetros da unidade após a inicialização freqÜentemente não  são  os  mesmos
       que  o  sistema  usa  para  o  dispositivo. A maioria dos sistema usam unidades no modo de
       blocagem variável, se a mesma suportar. Isto aplica-se a maioria  das  unidades  modernas,
       incluindo  DATs,  8mm,  DLTs,  etc.  Pode ser oportuno usar esta unidades em modo variável
       também no Linux (i.e usa MTSETBLK ou MTSETDEFBLK na inicialização para definir o modo), ao
       menos  quando  trocar  dados  com outros sistemas. A desvantagem disto é que um tamanho de
       bloco suficientemente grande tem que ser  usado  para  obter  uma  taxa  de  transferência
       aceitável em barramento SCSI.

       2.  Muitos  programas  (por  ex., tar) permitem ao usuário especificar o fator de bloco na
       linha de comando. Note que isto determina o tamanho do bloco físico na fita apenas no modo
       de bloco variável.

       3.  Para poder usar unidades SCSI, o driver SCSI básico, o driver da placa SCSI e o driver
       para fita SCSI deve ser compilado no Linux ou carregado como módulo. Se o driver para fita
       SCSI  não  estiver  presente, a unidade é reconhecida, mas o suporte descrito nesta página
       não está disponível.

       4. O driver grava as mensagens de erro no console/log.  Os  códigos  escritos  em  algumas
       mensagens  são automáticamente traduzidos para texto se a exibição das mensagens SCSI está
       habilitada na compilação do Linux.

DIREITOS AUTORAIS

       Copyright © 1995 Robert K. Nichols.
       Copyright © 1999 Kai Mäkisara.

       É permitido fazer e distribuir cópias deste manual desde que o aviso de direitos  autorais
       e esta permissão esteja presente em todas as cópias.  Permissões adicionais estão contidas
       nos cabeçalhos do arquivo fonte.

TRADUÇÃO E REVISÃO PARA LÍNGUA PORTUGUESA

       Fábio  Henrique  F.  Silva  <fabiohfs@eol.com.br>  (tradução)   Carlos   Augusto   Horylka
       <horylka@conectiva.com.br> (revisão)