Provided by: manpages-pt_20040726-4_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,C~AO

       O  driver  st  prove a interface para varios dispositivos de fita SCSI.
       Atualmente, o driver controla todos os dispositivos detetados  do  tipo
       "acesso-sequencial."  O driver st usa o numero de dispositvo maior 9.

       Cada dispositivo usa oito numeros menores. Os cinco bits de menor ordem
       nos numeros menores sao atribuidos sequencialmente na ordem em que  sao
       detetados.  Os numeros menores podem ser agrupados em dois conjuntos de
       quatro numeros. os numeros menores principais (auto-rebobinamento),  n,
       e  um numero de dispositivo "sem rebobinamento" numeros de dispositivo,
       (n+ 128).  Os dispositivos abertos usando o numero principal  receberao
       o comando REWIND que os rebobinara quando forem fechados.  Dispositivos
       abertos usando o "numero de dispositvo"sem rebobinamento.  (Observe que
       usando um dispositivo com auto-rebobinamento, ao posicionar a fita, por
       exemplo, o mt nao da o resultado desejado: a fita e  rebobinada  depois
       do comando mt e o proximo comando atua a partir do inicio da fita).

       Em  cada  grupo,  quatro numeros menores estao disponiveis para definir
       dispositivos  com  caracteristicas  diferentes   (tamanho   do   bloco,
       compressao, densidade, etc). Quando o sistema inicia, apenas o primeiro
       dispositivo esta disponivel. Os outros  tres  sao  ativados  quando  as
       caracteristicas  padroes  sao  definidas  (veja  abaixo). (Alterando as
       constantes durante a compilacao, e possivel mudar  o  balanco  entre  o
       numero  maximo  de  unidades  de  fita  e  o  numero de menor numero de
       dispositivo para cada unidade. A alocacao padrao permite  controlar  32
       unidades  de  fita.   Por exemplo, e possivel controlar ate 64 unidades
       com dois numeros menores para diferentes opcoes).

       Os dispositivos sao 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

       Nao ha dispositivos de bloco correspondentes.

       O driver usa um buffer interno que tem que ter espaco  suficiente  para
       manter  no  minimo  um  bloco  de fita. No Linux anterior ao 2.1.121, o
       buffer e alocado como um bloco contiguo. Isto limita o tamanho do bloco
       para  o  maior bloco contiguo de memoria que o alocador pode prover.  O
       limite atual e de 128kB para a arquitetura de 32 bits e  256kB  para  a
       arquitetura  de  64  bits.  Nas novas versoes do Linux o driver aloca o
       buffer em varias partes se necessario. Por padrao, o numero  maximo  de
       partes  e  16.  Isto  significa  que  o tamanho maximo do bloco e muito
       grande (2 MB se alocado 16 blocos de 128kB).

       O tamanho do buffer interno do driver e determinado por  uma  constante
       em  tempo  de  compilacao,  que  pode  ser sobrescrita com uma opcao na
       inicializacao do kernel do Linux.  Em adicao a  isto,  o  driver  tenta
       alocar  um buffer temporario grande em tempo de execucao se necessario.
       Porem, a alocacao em tempo de execucao de grandes blocos  contiguos  de
       memoria pode falhar, portanto, nao confie muito em alocacao dinamica de
       buffer em versoes anteriores a 2.1.121 (isto tambem se aplica em  carga
       dinamica de driver usando o kerneld e kmod).

       O  driver  nao  suporta  especificamente  qualquer  marca  ou modelo de
       unidade de fita. Depois que o sistema inicia, as opcoes do  dispositivo
       de  fita  sao  definidas  pelo  firmware  da unidade. Por exemplo, se o
       firmware seleciona o modo de blocagem fixa, a  unidade  de  fita  usara
       este   modo.  As  opcoes  podem  ser  alteradas  com  chamadas  ioctl()
       explicitas e mantidas em  efeito  quando  o  dispositivo  e  fechado  e
       reaberto.   As opcoes definidas afetam, tanto os dispositivos com auto-
       rebobinamento, quanto os sem rebobinamento.

       Opcoes diferentes podem ser especificadas para dispositivos diferentes,
       dentro  de  um  subgrupo  de  quatro.  As  opcoes fazem efeito quanto o
       dispositivo e 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 variaveis (se a unidade suportar  ambos  os
       modos).

       O  driver  suporta  parti,c~oes  se  a  unidade  de fita suporta-las. (As
       particoes em fita nao tem nada ver com as particoes em disco. Uma  fita
       particionada  pode  ser  vista  como varias fitas logicas.) O suporte a
       particoes tem que ser habilitado com um ioctl. A localizacao da fita  e
       preservada  em  cada  particao  atraves  das alteracoes na particao.  A
       particao usada para operacoes subsequentes, e selecionada com um ioctl.
       A  mudanca  de  particao  e executada junto com a proxima operacao para
       evitar movimento desnecessario da fita. O numero maximo de particoes um
       uma   fita   e   definido   por  uma  constante  durante  a  compilacao
       (originalmente quatro). O driver contem um ioctl que pode formatar  uma
       fita com uma ou duas particoes.

       O  dispositivo  /dev/tape e geralmente criado como um vinculo simbolico
       ou fixo para o dispositivo de fita padrao no sistema.

TRANSFER^ENCIA DE DADOS

       O driver suporta operacoes nos modos de blocagem fixa  e  variavel  (se
       suportado  pela  unidade).  No  modo  de  blocagem fixa a unidade grava
       blocos de tamanho especifico e o tamanho do bloco nao e  dependente  do
       contador de bytes gravados, usado pelas chamadas do sistema. No modo de
       blocagem variavel, um bloco e gravado para cada chamada de gravacao e o
       contador  de  bytes determina o tamanho do bloco. Observe que os blocos
       na fita, nao contem quaisquer informacoes sobre  o  mode  de  gravacao.
       Durante  a  leitura, o importante e usar comandos que aceitam o tamanho
       dos blocos gravados.

       No modo variavel, o contador de bytes nao precisa coincidir  exatamente
       com o tamanho do bloco. Se o contador e maior do que o proximo bloco na
       fita, o driver retorna os dados e a funcao retorna o tamanho  atual  do
       bloco.  Se  o  tamanho  do  bloco e maior do que o contador de bytes, a
       quantidade requisitada de dados e retornada a partir do inicio do bloco
       e o resto e descartado.

       No modo fixo, o contador de bytes lidos pode ser arbitrario se o uso de
       buffer estiver habilitado ou um multiplo  do  tamanho  do  bloco  se  o
       buffer  estiver  desabilitado.  O Linux antes da versao 2.1.121 permite
       gravacao com um contador  de  byte  arbitrario,  se  o  buffer  estiver
       habilitado. Em todos os casos, o contador de bytes de gravados deve ser
       um multiplo do tamanho do bloco.

       Um marcador de arquivo e automaticamente gravado na fita  se  a  ultima
       operacao na fita antes de fecha-la foi uma gravacao.

       Quando um marcador de arquivo e encontrado enquanto lendo, a seguinte e
       comcluido. Se houver dados no buffer quando um marcador  de  arquivo  e
       encontrado,  estes  dados serao retornados. A proxima leitura retornara
       zero bytes. A leitura seguinte retornara os dados do proximo arquivo. O
       fim  dos dados gravados e sinalizado pelo retorno de zero bytes durante
       duas leituras consecutivas. A terceira leitura retornara um erro.

IOCTLS

       O driver suporta tres requisitos ioctl.  Os requisitos nao reconhecidos
       pelo driver st sao passados para o driver SCSI As definicoes abaixo sao
       do /usr/include/linux/mtio.h:

   MTIOCTOP - Executa uma opera,c~ao de fita
       Este requisito leva um argumento do tipo (struct mtop *).  Nem todos as
       unidades  suportam todas as operacoes.  O driver retorna um erro EIO se
       a unidade rejeitar uma operacao.

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

       Operacoes de fita magneticas para uso normal:
       MTBSF         Retrocede espacos sobre mt_count marcadores de arquivos.
       MTBSFM        Retrocede espacos sobre mt_count marcadores de  arquivos.
                     Reposiciona  a  fita  no  lado  EOT  ultimo  marcador  de
                     arquivo.
       MTBSR         Retrocede espacos sobre  mt_count  registros  (blocos  da
                     fita).
       MTBSS         Retrocede espacos sobre mt_count setmarks.
       MTCOMPRESSION Habilita  compressao  de dados se mt_count nao for zero e
                     desabilita a compressao se mt_count e zero. Este  comando
                     usa o MODO page 15 suportado pela maioria das fitas DATs.
       MTEOM         Vai  para  o  final  da  midia  gravada (para acrescentar
                     arquivos).
       MTERASE       Apaga a fita.
       MTFSF         Avanca mt_count marcadores de arquivos.
       MTFSFM        Avanca mt_count marcadores de  arquivos.   Reposiciona  a
                     fita no lado BOT do ultimo marcado de arquivo.
       MTFSR         Avanca espacos sobre mt_count registro (blocos da fita).
       MTFSS         Avanca espacos sobre mt_count setmarks.
       MTLOAD        Executa  o  comando  load  SCSI.  Um  caso  especial esta
                     disponivel para alguns carregadores  automaticos  HP.  Se
                     mt_count  e  a  constante  MT_ST_HPLOADER_OFFSET  mais um
                     numero, o numero e enviando para a  unidade  controlar  a
                     carga automatica.
       MTLOCK        Bloqueia a porta da unidade de fita.
       MTMKPART      Formata  a fita em uma ou duas particoes. Se mt_count nao
                     for zero, ele da o  tamanho  da  primeira  particao  e  a
                     segunda  particao contem o resto da fita. Se mt_count for
                     zero, a fita e formatada com um particao.   Este  comando
                     nao  e  permitido  em uma unidade a menos que o suporte a
                     esteja habilitado (veja MT_ST_CAN_PARTITIONS abaixo).
       MTNOP         Nenhuma operacao - 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  numero  de bloco especificado em mt_count.
                     Esta operacao requer uma unidade  SCSI-2  que  suporte  o
                     comando  LOCATE  (endereco  de dispositivo especifico) ou
                     uma unidade Tandberg-compativel SCSI-1 (Tandberg, Archive
                     Viper,  Wangtek,  ...  ).   O  numero do bloco devera ser
                     aquele previamente retornado pelo MTIOCPOS se o  endereco
                     especifico 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 variavel.
       MTSETDENSITY  Define  a  densidade para o codigo em mt_count.  O codigo
                     de densidade suportado pela unidade pode  ser  encontrado
                     na documentacao da unidade.
       MTSETPART     A  particao e alternada para mt_count .  As particoes sao
                     numeradas a partir de zero. Este comando nao e  permitido
                     em  uma unidade, a menos que o suporte a particoes esteja
                     habilitado (veja MT_ST_CAN_PARTITIONS abaixo).
       MTUNLOAD      Executa o comando SCSI unload (nao ejeta a fita).
       MTUNLOCK      Desbloqueia a porta da unidade de fita.
       MTWEOF        Grava mt_count marcadores de arquivos.
       MTWSM         Grava mt_count setmarks.

       Operacoes de Fita  Magnetica  para  configurar  opcoes  de  dispositivo
       (superusuario):
       MTSETDRVBUFFER
               Define  varias opcoes de driver e unidade de acordo com os bits
               codificados em mt_count.  Isto consiste do modo de  buferizacao
               da  unidade,  13  opcoes  Booleanas  da  unidade, os limites de
               gravacao do buffer, padroes para o tamanho do bloco e densidade
               e  limites  de  tempo  (apenas  no Linux >= 2.1).  Uma operacao
               simples so pode afetar  um  item  na  lista  acima  (as  opcoes
               Booleanas contadas com um item.)

               Um  valor zero nos 4 bits de alta ordem sera usado para definir
               o modo  de  buferizacao  da  unidade  de  fita.   Os  modos  de
               buferizacao sao:

                   0   A  unidade  nao informara o estado GOOD nos comandos de
                       gravacao ate que os blocos de dados sejam  gravados  na
                       midia.
                   1   A  unidade  informara  o  estado  GOOD  nos comandos de
                       gravacao  assim  que  todos  os   dados   tenham   sido
                       transferidos do buffer interno da unidade.
                   2   A  unidade  pode informar o estado GOOD nos comandos de
                       gravacao 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 midia.

               Para  controlar  o limite de gravacao, 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 nao ao  tamanho  fisico
               dos  blocos na fita.  Os limites nao podem exceder o tamanho do
               buffer interno da unidade (veja DESCRI,C~AO, acima).

               Para definir e limpar as opcoes 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 combinacao das opcoes a seguir e
               desejavel.  Usando MT_ST_BOOLEANS as opcoes podem ser definidas
               para   valores   definidos   nos   bits   correspondentes.  Com
               MT_ST_SETBOOLEANS as opcoes podem ser seletivamente definidas e
               com MT_ST_DEFBOOLEANS seletivamente limpas.

               As  opcoes  padroes  para  um  dispositivo  de  fita  podem ser
               definidas com MT_ST_DEFBOOLEANS. Um dispositivo de fita inativo
               (i.e.,  um  dispositivo  com  numero menor 32 ou 160) e ativado
               quando as opcoes padroes para ele  sao  definidas  na  primeira
               vez.   Um   dispositivo   ativado   herda  daquele  ativado  na
               inicializacao as opcoes nao definidas explicitamente.

               As opcoes Booleanas sao:

               MT_ST_BUFFER_WRITES  (Padrao: true)
                      Coloca no buffer todas as operacoes de gravacao usando a
                      blocagem fixa.  Se esta opcao e false e a unidade usa um
                      bloco de tamanho  fixo,  entao  todas  as  operacoes  de
                      gravacao  devem  usar  um  multiplo do tamanho do bloco.
                      Esta opcao deve ser definida como falsa  para  se  obter
                      uma gravacao confiavel em sistemas multi-volumes.
               MT_ST_ASYNC_WRITES  (Padrao: true)
                      Quando  esta  opcao e verdadejra, a operacao de gravacao
                      retorna imediatamente sem esperar  que  os  dados  sejam
                      transferidos  para a unidade se os dados estao ajustados
                      dentro do buffer  da  unidade.   O  limite  de  gravacao
                      determina  quando o buffer esta cheio mas depois um novo
                      comando  de  escrita  SCSI  e  usado.   Quaisquer  erros
                      relatados  pela  unidade  serao  retidos  ate  a proxima
                      operacao.  Esta opcao deve ser definida como falsa  para
                      se  obter  uma  gravacao  confiavel  em  sistemas multi-
                      volumes.
               MT_ST_READ_AHEAD  (Padrao: true)
                      Esta opcao faz o  driver  prover  leitura  buferizada  e
                      leitura a frente em blocos fixos.  Se esta opcao e false
                      e a unidade usa um  tamanho  de  bloco  fixo,  todas  as
                      operacoes  de  leitura devem ser multiplos do tamanho do
                      bloco.
               MT_ST_TWO_FM  (Padrao: false)
                      Esta opcao modifica as caracteristicas do driver  quando
                      um  arquivo e fechado.  A acao normal e gravar uma marca
                      de arquivo simples.  Se  esta  opcao  e  true  o  driver
                      gravara   duas  marcas  de  arquivo  e  um  caracter  de
                      retrocesso sobre a ultima marca.

                      Nota: Esta opcao nao pode ser true para unidades de fita
                      QIC  uma  vez que elas nao podem sobrescrever a marca de
                      arquivo.  Estas  unidades  detetam  o  final  dos  dados
                      gravados  testando  se  a fita esta em branco. A maioria
                      das unidades atuais tambem detetam  o  final  dos  dados
                      gravados  e  o  uso  das  duas  marcas  de  arquivo  sao
                      necessaria apenas quando  ha  intercambio  de  fita  com
                      outros sistemas.

               MT_ST_DEBUGGING  (Padrao: false)
                      Esta  opcao ativa varias mensagens de depuracao de erros
                      do driver (so tem efeito se o driver foi  compilado  com
                      DEBUG definido com valor diferente de zero).
               MT_ST_FAST_EOM  (Padrao: false)
                      Esta  opcao  envia  a  operacao MTEOM diretamente para a
                      unidade, potencialmente acelera a  operacao,  mas  causa
                      perda de trilhas do numero de arquivo atual, normalmente
                      retornado pela requisicao MTIOCGET.  Se MT_ST_FAST_EOM e
                      false   o   driver   respondera  a  um  requisito  MTEOM
                      repassando espacos sobre o arquivo.
               MT_ST_AUTO_LOCK (Padrao: false)
                      Quando esta opcao e true, a porta da unidade e bloqueada
                      quando  o dispositivo e aberto e desbloqueada quando ele
                      e fechado.
               MT_ST_DEF_WRITES (Padrao: false)
                      As opcoes da fita (tamanho do bloco,  modo,  compressao,
                      etc.)  pode  variar  quando  muda-se  de  um dispositivo
                      vinculado a uma unidade, para outro  vinculado  a  mesma
                      unidade   dependendo   de  como  os  dispositivos  estao
                      definidos. Esta opcao  define  quando  as  mudancas  sao
                      forcadas pelo driver atraves de comandos SCSI e quando a
                      unidade auto-deteta que as capacidades  sao  confiaveis.
                      Se  esta  opcao e false, o driver envia os comandos SCSI
                      imediatamente quando o  dispositivo  e  alterado.  Se  a
                      opcao  e true, os comandos SCSI nao sao enviados ate que
                      uma gravacao seja requisitada. Neste caso o firmware  da
                      unidade  tem  permissao para detetar a estrutura da fita
                      durante a leitura e os comandos SCSI sao  usados  apenas
                      para  certificar-se que a fita e gravada de acordo com a
                      especificacao correta.
               MT_ST_CAN_BSR (Padrao: false)
                      Quando a leitura a frente e usada, a fita  deve  algumas
                      vezes  ser  rebobinada  para  a posicao correta quando o
                      dispositivo e fechado e o comando SCSI para efetuar esta
                      tarefa  e  usado.  Algumas  unidades  antigas  nao podem
                      processar este comando confiavelmente e esta opcao  pode
                      ser  usada  para  instruir  o  a nao usa-lo. O resultado
                      final e que, com leitura a frente  e  o  modo  de  bloco
                      fixo,  a  fita  nao pode ser corretamente posicionada no
                      arquivo quando o dispositivo e fechado.
               MT_ST_NO_BLKLIMS (Padrao: false)
                      Algumas unidades nao aceitam o comando SCSI  READ  BLOCK
                      LIMITS.   Se   ele  e  usado,  o  driver  nao  usa-o.  A
                      desvantagem e que o driver  nao  pode  checar  antes  de
                      enviar  os  comandos se o tamanho de bloco selecionado e
                      aceitavel pela unidade de fita.
               MT_ST_CAN_PARTITIONS (Padrao: false)
                      Esta opcao habilita o suporte a varias particoes em  uma
                      fita.   Ela aplica-se a todos os dispositivos vinculados
                      a unidade.
               MT_ST_SCSI2LOGICAL (Padrao: false)
                      Esta opcao instrui o driver a usar o endereco logico  de
                      bloco  definido no padrao SCSI-2 durante as operacoes de
                      procura e ( com os comandos MTSEEK e MTIOCPOS e  durante
                      alteracoes   na   particao).  Do  contrario  o  endereco
                      especifico  do  dispositivo  e   usado.    E   altamente
                      recomendavel  definir esta opcao se a unidade suporta os
                      enderecos logicos, porque eles tambem contam  as  marcas
                      de  arquivo.  Ha  algumas  unidades  que  so  suportam o
                      enderecamento logico de bloco.
               MT_ST_SYSV (Padrao: false)
                      Quando esta opcao e habilitada, o  dispositivo  de  fita
                      usa  a  semantica  do  SystemV.  Do contrario a do BSD e
                      usada. A diferenca mais importante entre as semanticas e
                      o  que acontece quando um dispositivo usado para leitura
                      e fechado: na semantica SYSV a fita e  avancada  para  a
                      proxima  marca  de arquivo se a mesma nao foi encontrada
                      durante a utilizacao do dispositivo. Na semantica BSD  a
                      posicao da fita nao 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 padrao do bloco para um dispositivo pode ser definido
               com   MT_ST_DEF_BLKSIZE    e    a    densidade    padrao    com
               MT_ST_DEFDENSITY.  Uma operacao OU e executada entre os valores
               dos parametros e o codigo da operacao.

               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 padrao do Linux e  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 unico em espera. Estes comandos
               podem ser  usados  para  definir  valores  mais  praticos  para
               unidades  especificas.  O  limite definido para um dispositivo,
               aplica-se a todos que estejam vinculados a mesma unidade.

   MTIOCGET - Obt'em o estado
       Esta requisicao 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 sao dependentes do dispositivo */
           long   mt_dsreg;
           long   mt_gstat;
           long   mt_erreg;
           /* Os dois campos a seguit nem sempre sao usados */
           daddr_t          mt_fileno;
           daddr_t          mt_blkno;
       };

       mt_type    Arquivo cabecalho define varios valores para mt_type, mas  o
                  driver  atual so informa os tipos genericos MT_ISSCSI1 (Fita
                  SCSI-1 generica) e MT_ISSCSI2 (Fita SCSI-2 generica).
       mt_resid   contem o numero da particao da fita atual.
       mt_dsreg   informa a definicao de tamanho de  bloco  da  unidade  atual
                  (nos  24 bits baixos) e densidade (nos 8 bits altos).  Estes
                  campos    sao     definidos     por     MT_ST_BLKSIZE_SHIFT,
                  MT_ST_BLKSIZE_MASK,           MT_ST_DENSITY_SHIFT          e
                  MT_ST_DENSITY_MASK.
       mt_gstat   da  informacoes  genericas  do   estado   (independente   do
                  dispositivo).  O arquivo cabecalho define macros para testar
                  estes bits de estado:
                  GMT_EOF(x): A fita esta posicionada apos a marca de  arquivo
                      (sempre false apos uma operacao MTSEEK).
                  GMT_BOT(x):  A  fita  esta posicionada no inicio do primeiro
                      arquivo (sempre false apos uma operacao MTSEEK).
                  GMT_EOT(x): Uma operacao da fita alcancou o final fisico  da
                      Fita.
                  GMT_SM(x):  A fita esta posicionada na setmark (sempre false
                      apos uma operacao MTSEEK).
                  GMT_EOD(x):  A  fita  esta  posicionada  no  final  do  dado
                      gravado.
                  GMT_WR_PROT(x):  A  unidade  esta protegida contra gravacao.
                      Para algumas unidades isto pode significar que  a  mesma
                      nao suporta gravacao no tipo midia atual.
                  GMT_ONLINE(x): O ultimo open() encontrou uma fita na unidade
                      e pronta para operacao.
                  GMT_D_6250(x),    GMT_D_1600(x),    GMT_D_800(x):    Reporta
                      informacoes  de  estado  "genericas"  sobre  a densidade
                      atual definida em 9-track enas para unidades de fita  de
                      12".
                  GMT_DR_OPEN(x): A unidade nao contem uma fita.
                  GMT_IM_REP_EN(x):  Modo  de  Informacao Imediata. Este bit e
                      definido se nao ha garantias que  os  foram  fisicamente
                      gravados  na  fita quando a chamada de gravacao retorna.
                      Ele e definido zero apenas quando o driver nao  buferiza
                      os  dados  e a unidade esta definida para nao colocar os
                      dados no buffer.
       mt_erreg   O unico campo definido em mt_erreg e  o  contador  de  erros
                  recuperados,  nos  16  bits  de  baixa  ordem (como definido
                  porMT_ST_SOFTERR_SHIFT  e  MT_ST_SOFTERR_MASK).   Devido   a
                  inconsistencias  na forma como as unidades informam os erros
                  recuperados, o contador  frequentemente  nao  e  mantido  (a
                  maioria  das  unidades  nao  informam  por  padrao  erros de
                  programas, mas isto pode ser alterado  com  o  comando  SCSI
                  MODE SELECT).
       mt_fileno  Informa o numero atual do arquivo (base-zero).  Este valor e
                  -1 quando o numero do arquivo e desconhecido  (i.e.,  depois
                  de MTBSS ou MTSEEK).
       mt_blkno   Informa  o  numero  de  bloco  (base-zero) do arquivo atual.
                  Este valor e -1 quando o  numero  do  bloco  e  desconhecido
                  (i.e., depois de MTBSF, MTBSS, ou MTSEEK).

   MTIOCPOS - Obt'em a posi,c~ao da fita.
       Este requesito aceita um argumento do tipo (struct mtpos *) e informa a
       nocao da unidade do numero de bloco da fita atual, que nao  e  o  mesmo
       que mt_blkno retornado por MTIOCGET.  A unidade deve ser uma SCSI-2 que
       suporte o comando READ POSITION (endereco especifico do dispositivo) ou
       uma   unidade  SCSI-1  Tandberg-compativel  (Tandberg,  Archive  Viper,
       Wangtek, ... ).

       /* estrutura para MTIOCPOS - comando para obter a posicao da fita */
       struct     mtpos {
           long   mt_blkno; /* numero do bloco atual */
       };

VALOR RETORNADO

       EIO           A operacao solicitada nao pode ser concluida.

       ENOSPC        Uma operacao de gravacao nao pode ser concluida porque  a
                     fita chegou no final fisico.

       EACCES        Tentando   gravar  ou  apagar  um  fita  com  protecao  a
                     gravacao.  (Este erro nao e detetado durante um open().)

       EFAULT        Os parametros do comando apontam  para  memoria  que  nao
                     pertencem ao processo chamado.

       ENXIO         Durante a abertura o dispositivo de fita nao existe.

       EBUSY         O  dispositivo  ja  esta em uso ou o driver nao conseguiu
                     alocar um buffer.

       EOVERFLOW     Tentou ler ou gravar um bloco de tamanho variavel  que  e
                     maior do que o buffer interno da unidade.

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

       ENOSYS        ioctl() desconhecido.

       EROFS         Tentativa de abrir com O_WRONLY ou O_RDWR quando  a  fita
                     na unidade esta protegida contra gravacao.

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 Makisara (Kai.Makisara@metla.fi) a partir
       de um driver escrito por Dwayne Forsyth. Varias outras  pessoas  tambem
       contribuiram com o driver.

VEJA TAMB'EM

       mt(1)

       O  arquivo  README.st  nos  fontes  do  Linux  contem  informacoes mais
       recentes sobre o driver e suas possibilidades de configuracao.

NOTAS

       1. Quando trocar dados entre sistemas,  ambos  tem  que  usar  o  mesmo
       tamanho  de  bloco  fisico  da  fita.  Os  parametros da unidade apos a
       inicializacao freqUentemente nao sao os mesmos que o sistema usa para o
       dispositivo.  A  maioria  dos sistema usam unidades no modo de blocagem
       variavel, 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  variavel  tambem  no  Linux  (i.e  usa  MTSETBLK  ou
       MTSETDEFBLK  na  inicializacao  para  definir  o modo), ao menos quando
       trocar dados com outros sistemas. A desvantagem disto e que um  tamanho
       de  bloco  suficientemente grande tem que ser usado para obter uma taxa
       de transferencia aceitavel em barramento SCSI.

       2. Muitos programas (por ex., tar) permitem ao  usuario  especificar  o
       fator  de  bloco na linha de comando. Note que isto determina o tamanho
       do bloco fisico na fita apenas no modo de bloco variavel.

       3. Para poder usar unidades SCSI, o driver SCSI  basico,  o  driver  da
       placa  SCSI  e  o  driver para fita SCSI deve ser compilado no Linux ou
       carregado como modulo. Se o driver para fita SCSI nao estiver presente,
       a  unidade  e reconhecida, mas o suporte descrito nesta pagina nao esta
       disponivel.

       4. O driver grava as mensagens  de  erro  no  console/log.  Os  codigos
       escritos em algumas mensagens sao automaticamente traduzidos para texto
       se a exibicao das mensagens  SCSI  esta  habilitada  na  compilacao  do
       Linux.

DIREITOS AUTORAIS

       Copyright (C) 1995 Robert K. Nichols.
       Copyright (C) 1999 Kai Makisara.

       E permitido fazer e distribuir copias deste manual desde que o aviso de
       direitos autorais e esta permissao esteja presente em todas as  copias.
       Permissoes adicionais estao contidas nos cabecalhos do arquivo fonte.

TRADU,C~AO E REVIS~AO PARA L'INGUA PORTUGUESA

       Fabio Henrique F. Silva <fabiohfs@eol.com.br> (traducao) Carlos Augusto
       Horylka <horylka@conectiva.com.br> (revisao)