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ÇÃ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)