Provided by: manpages-pl_4.18.1-1_all bug

NAZWA

       st - urządzenie taśmy SCSI

SKŁADNIA

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

OPIS

       Sterownik  st  udostępnia  interfejs  do  różnego rodzaju napędów taśm magnetycznych SCSI.
       Obecnie  sterownik  przejmuje  kontrolę  nad  wszystkimi   wykrytymi   urządzeniami   typu
       "sequential-access"  (dostępu  sekwencyjnego).  Sterownikowi  st przydzielony został numer
       główny 9.

       Każde urządzenie ma  osiem  numerów  podrzędnych.  Na  pięciu  najniższych  bitach  numeru
       podrzędnego  reprezentowane  są przydzielone kolejno numery urządzeń (kolejność detekcji).
       Numery podrzędne można pogrupować  w  dwóch  zbiorach  po  cztery  numery:  główne  numery
       podrzędne  (urządzenia  z  przewijaniem),  n,  oraz numery urządzeń "bez przewijania", (n+
       128).  Urządzenie otwarte przy wykorzystaniu głównego numeru podrzędnego otrzyma polecenie
       REWIND  podczas  jego zamykania. Urządzenia otwierane przy wykorzystaniu numeru urządzenia
       "bez przewijania" nie otrzymają takiego rozkazu. (Trzeba zauważyć, że używanie  urządzenia
       "bez  przewijania"  do  pozycjonowania  taśmy,  na  przykład za pomocą mt, nie prowadzi do
       pożądanego efektu: taśma jest przewijana po wydaniu  polecenia  mt  i  następne  polecenie
       zaczyna od początku taśmy.)

       W  każdej  grupie  dostępne  są  cztery  numery podrzędne, definiujące urządzenia o różnej
       charakterystyce (rozmiar bloku, kompresja, gęstość itp.).  Podczas startu systemu dostępne
       jest  tylko  pierwsze  urządzenie. Aktywacja pozostałych trzech następuje po zdefiniowaniu
       ich  domyślnych  charakterystyk  (patrz  niżej).  (Zmieniając  wartości  stałych   podczas
       kompilacji, możliwa jest zmiana równowagi pomiędzy maksymalną liczbą napędów taśm a liczbą
       numerów podrzędnych dla każdego napędu. Domyślna alokacja powala na sterowanie 32 napędami
       taśm.  Na  przykład,  można  sterować  nie  więcej niż 64 napędami taśm, posiadając po dwa
       numery podrzędne dla różnych opcji.)

       Pliki urządzeń są zwykle tworzone za pomocą poleceń:

           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

       Brak jest odpowiadających urządzeń blokowych.

       The driver uses an internal buffer that has to be large enough to hold at least  one  tape
       block.   Before  Linux  2.1.121,  the  buffer  is allocated as one contiguous block.  This
       limits the block size to the largest contiguous block of memory the kernel  allocator  can
       provide.   The  limit  is  currently 128 kB for 32-bit architectures and 256 kB for 64-bit
       architectures.  In newer kernels the driver allocates  the  buffer  in  several  parts  if
       necessary.   By  default,  the maximum number of parts is 16.  This means that the maximum
       block size is very large (2 MB if allocation of 16 blocks of 128 kB succeeds).

       The driver's internal buffer size is determined by a compile-time constant  which  can  be
       overridden  with  a  kernel  startup  option.   In  addition  to this, the driver tries to
       allocate a larger temporary buffer at run time if necessary.  However, run-time allocation
       of  large contiguous blocks of memory may fail and it is advisable not to rely too much on
       dynamic buffer allocation before Linux 2.1.121 (this applies also  to  demand-loading  the
       driver with kerneld or kmod).

       Ten  sterownik  nie zawiera żadnej specyficznej obsługi dla taśm wybranego producenta, czy
       modelu. Po starcie systemu opcje urządzenia taśmowego są określane na  podstawie  firmware
       napędu.  Na  przykład,  jeśli  firmware  napędu  wybiera  tryb  o  stałej  długości bloku,
       urządzenie taśmowe również używa trybu o stałej długości bloku. Opcje te można zmienić  za
       pomocą  jawnych  wywołań  ioctl(2)  i zmiany te pozostają aktywne, gdy urządzenie zostanie
       zamknięte i ponownie otwarte. Ustawione opcje dotyczą zarówno urządzeń z przewijaniem, jak
       i bez przewijania.

       Można  podawać różne opcje dla różnych urządzeń w ramach podgrupy czterech urządzeń. Opcje
       są ustawiane dla urządzenia, gdy jest otwierane. Na przykład, administrator  systemu  może
       zdefiniować  jedno  urządzenie  zapisujące  w  trybie  o  stałej  długości  bloku  i jedno
       zapisujące w trybie o zmiennej długości bloku (jeśli napęd obsługuje obydwa tryby).

       Sterownik obsługuje strefy taśm, jeśli są one obsługiwane przez napęd. (Trzeba tu  zwrócić
       uwagę,  że  strefy  taśm  nie  mają  nic wspólnego z partycjami dysków [po angielsku w obu
       przypadkach "partitions" - przyp. tłum.]. Taśma podzielona na  strefy  może  być  widziana
       jako  kilka  logicznych  taśm  na  jednym nośniku). Obsługę stref trzeba włączyć za pomocą
       ioctl(2). Przy zmianach stref zachowywane jest położenie na taśmie  w  obrębie  każdej  ze
       stref.  Strefę,  której  mają  dotyczyć  następne operacje wybiera się za pomocą ioctl(2).
       Przełączanie stref  odbywa  się  łącznie  z  następną  operacją  na  taśmie,  aby  uniknąć
       niepotrzebnego  przewijania taśmy.  Maksymalna liczba stref na taśmie określona jest przez
       stałą czasu  kompilacji  (pierwotnie:  cztery).  Sterownik  zawiera  ioctl(2)  pozwalający
       sformatować taśmę z jedną lub dwiema strefami.

       Urządzenie  /dev/tape  jest  zwykle  dowiązaniem  zwykłym  lub  symbolicznym do domyślnego
       urządzenia reprezentującego taśmę magnetyczną w danym systemie.

       Starting from Linux 2.6.2, the driver exports in the sysfs directory  /sys/class/scsi_tape
       the attached devices and some parameters assigned to the devices.

   Transfer danych
       Sterownik  może pracować zarówno w trybie o stałej, jak i o zmiennej długości bloku (jeśli
       napęd obsługuje oba tryby).  W  trybie  o  stałej  długości  bloku  napęd  zapisuje  bloki
       określonej  długości  i  rozmiar  bloku  nie zależy od liczby bajtów, która została podana
       systemowej funkcji zapisu. W trybie o zmiennej długości bloku zapisywany jest  jeden  blok
       przy każdym wywołaniu funkcji zapisu, a liczba bajtów podanych tej funkcji określa rozmiar
       odpowiedniego bloku na taśmie. Należy tu zwrócić uwagę, ze bloki na taśmie  nie  zawierają
       informacji  o  trybie  zapisu:  jedyną  ważną rzeczą podczas odczytu jest używanie poleceń
       akceptujących rozmiary bloków znajdujących się na taśmie.

       In variable-block mode the read byte count does not have to  match  the  tape  block  size
       exactly.   If the byte count is larger than the next block on tape, the driver returns the
       data and the function returns the actual block size.  If the block size is larger than the
       byte count, an error is returned.

       In  fixed-block  mode  the read byte counts can be arbitrary if buffering is enabled, or a
       multiple of the tape block size if buffering is  disabled.   Before  Linux  2.1.121  allow
       writes  with  arbitrary  byte  count  if buffering is enabled.  In all other cases (before
       Linux 2.1.121 with buffering disabled or newer kernel) the write  byte  count  must  be  a
       multiple of the tape block size.

       In  Linux  2.6,  the  driver tries to use direct transfers between the user buffer and the
       device.  If this is not possible, the driver's internal buffer is used.  The  reasons  for
       not  using  direct transfers include improper alignment of the user buffer (default is 512
       bytes but this can be changed by the HBA driver), one or more pages of the user buffer not
       reachable by the SCSI adapter, and so on.

       Znacznik  pliku  jest  zapisywany  na taśmie automatycznie, jeśli ostatnią operacją na tej
       taśmie przed jej zamknięciem był zapis.

       Gdy podczas odczytu napotkany zostanie znacznik pliku, dzieje się co  następuje.  Jeśli  w
       chwili  natrafienia na znacznik pliku w buforze były dane, zostaną zwrócone dane z bufora.
       Następny odczyt zwróci zero bajtów. Kolejne odczyty zwrócą dane z następnego pliku. Koniec
       zapisanych  danych  jest  sygnalizowany zwróceniem zerowej liczby bajtów przez dwa kolejne
       wywołania funkcji odczytu. Trzeci odczyt zwróci błąd.

   Kontrolki systemowe (ioctl)
       Sterownik obsługuje trzy  wywołania  funkcji  ioctl(2).  Wywołania  nierozpoznawane  przez
       sterownik  i  st  są przekazywane do sterownika SCSI.  Poniższe definicje pochodzą z pliku
       /usr/include/linux/mtio.h:

   MTIOCTOP  wykonanie operacji na taśmie
       To wywołanie wymaga argumentu  typu  (struct  mtop *).   Nie  wszystkie  napędy  obsługują
       wszystkie polecenia.  Jeśli napęd odrzuca polecenie, sterownik przekazuje wartość EIO.

           /* Struktura dla polecenia MTIOCTOP dla taśmy magnetycznej: */
           struct mtop {
               short   mt_op;       /* operacje zdefiniowane poniżej */
               int     mt_count;    /* liczba powtórzeń operacji */
           };

       Operacje na taśmie magnetycznej:

       MTBSF  Przesunięcie do tyłu o mt_count znaczników pliku.

       MTBSFM Przesunięcie  do  tyłu o mt_count znaczników pliku. Ustawienie taśmy po stronie EOT
              (końca taśmy) ostatniego znacznika pliku.

       MTBSR  Przesunięcie do tyłu o mt_count rekordów (bloków taśmy).

       MTBSS  Przesunięcie do tyłu o mt_count znaczników (setmarks).

       MTCOMPRESSION
              Włączenie  kompresji  danych  na  taśmie  dla  danego  napędu,  gdy  mt_count  jest
              niezerowe,  wyłączenie  kompresji, gdy mt_count jest zerem. Polecenie to korzysta z
              MODE page 15 obsługiwanego przez większość urządzeń DAT.

       MTEOM  Przesunięcie do końca zapisanej części nośnika (w celu dogrania plików).

       MTERASE
              Erase tape.  With Linux 2.6, short erase (mark tape  empty)  is  performed  if  the
              argument is zero.  Otherwise, long erase (erase all) is done.

       MTFSF  Przesunięcie do przodu o mt_count znaczników pliku.

       MTFSFM Przesunięcie do przodu o mt_count znaczników pliku. Ustawienie taśmy po stronie BOT
              (początku taśmy) ostatniego znacznika pliku.

       MTFSR  Przesunięcie do przodu o mt_count rekordów (bloków taśmy).

       MTFSS  Przesunięcie do przodu o mt_count znaczników (setmarks).

       MTLOAD Wykonanie polecenia SCSI "load" (załadowanie taśmy). Szczególny przypadek dotyczący
              wyłącznie  niektórych  automatycznie ładujących napędów HP: gdy mt_count jest równe
              stałej MT_ST_HPLOADER_OFFSET  powiększonej  o  pewną  liczbę,  to  ta  liczba  jest
              przesyłana do napędu dla celów sterowania automatycznym załadowaniem.

       MTLOCK Zablokowanie kieszeni napędu taśm.

       MTMKPART
              Format  the tape into one or two partitions.  If mt_count is positive, it gives the
              size of partition 1 and partition 0 contains the rest of the tape.  If mt_count  is
              zero,  the  tape  is  formatted  into  one  partition.   From Linux 4.6, a negative
              mt_count specifies the size of partition 0  and  the  rest  of  the  tape  contains
              partition  1.   The  physical  ordering  of  partitions depends on the drive.  This
              command is not allowed for a drive unless the partition support is enabled for  the
              drive (see MT_ST_CAN_PARTITIONS below).

       MTNOP  Brak  operacji  —  jako  efekt uboczny opróżnia bufor sterownika.  Powinno się tego
              używać przed odczytaniem stanu za pomocą MTIOCGET.

       MTOFFL Przewinięcie taśmy i odłączenie napędu.

       MTRESET
              Inicjalizacja napędu.

       MTRETEN
              Wyrównanie napięcia taśmy.

       MTREW  Przewinięcie.

       MTSEEK Wyszukanie na taśmie bloku o numerze podanym w mt_count.  Ta operacja  wymaga  albo
              sterownika   SCSI-2,  który  obsługuje  polecenie  LOCATE  (adres  specyficzny  dla
              urządzenia) albo urządzenia SCSI-1 zgodnego z Tandberg  (Tandberg,  Archive  Viper,
              Wangtek,  ...  ).   Numer  bloku  powinien  być  równy  zwróconemu poprzednio przez
              MTIOCPOS, gdy używany jest adres specyficzny dla urządzenia.

       MTSETBLK
              Ustawienie długości bloku sterownika równej wartości podanej w  mt_count.   Długość
              równa 0 wprowadza napęd w tryb bloków o zmiennej długości.

       MTSETDENSITY
              Ustawienie  gęstości zapisu taśmy zakodowanej w mt_count.  Kody określające gęstość
              zapisu obsługiwane przez dany napęd można znaleźć w jego dokumentacji.

       MTSETPART
              Przełączenie aktywnej strefy na mt_count. Strefy są numerowane od  zera.  Polecenie
              to  nie  jest dozwolone dla napędów, dla których nie włączono obsługi stref (zobacz
              MT_ST_CAN_PARTITIONS poniżej).

       MTUNLOAD
              Wykonanie polecenia SCSI "unload" (nie wysuwa taśmy).

       MTUNLOCK
              Odblokowanie kieszeni napędu taśm.

       MTWEOF Zapisanie mt_count znaczników pliku.

       MTWSM  Zapisanie mt_count znaczników (setmarks).

       Polecenia ustawiające opcje dla napędów taśm magnetycznych (mogą być wydawane tylko  przez
       administratora):

       MTSETDRVBUFFER
              Set  various drive and driver options according to bits encoded in mt_count.  These
              consist of the drive's buffering mode, a set of Boolean driver options, the  buffer
              write  threshold, defaults for the block size and density, and timeouts (only since
              Linux 2.1).  A single operation can affect only one item in  the  list  below  (the
              Booleans counted as one item.)

              Wartość,  której  4  najwyższe  bity są równe 0 zostanie wykorzystana do ustawienia
              trybu buforowania napędu. Do wyboru są następujące tryby:

              0      Napęd nie będzie sygnalizować stanu GOOD po poleceniach zapisu, dopóki  dane
                     nie zostaną zapisane fizycznie na nośniku.

              1      Napęd może sygnalizować stan GOOD po poleceniach zapisu, gdy tylko wszystkie
                     dane zostaną umieszczone w wewnętrznym buforze napędu.

              2      Napęd może sygnalizować stan GOOD  po  poleceniach  zapisu,  gdy  tylko  (a)
                     wszystkie  dane  zostaną  przesłane  do  wewnętrznego  bufora  napędu  i (b)
                     wszystkie buforowane dane (z innych poleceń) zostaną pomyślnie  zapisane  na
                     nośniku.

              Aby    kontrolować    próg   zapisu,   wartość   mt_count   musi   zawierać   stałą
              MT_ST_WRITE_THRESHOLD  dodaną  za  pomocą  bitowego  OR  do  liczby  bloków  w   28
              najniższych bitach. Liczba bloków odnosi się do 1024-bajtowych bloków, a nie bloków
              o  fizycznym  rozmiarze  bloku  dla  danego  urządzenia.   Próg  zapisu  nie   może
              przekroczyć rozmiaru wewnętrznego bufora napędu (patrz OPIS powyżej).

              Aby  ustawić  lub  usunąć  opcje  logiczne, wartość mt_count musi zawierać jedną ze
              stałych     MT_ST_BOOLEANS,     MT_ST_SETBOOLEANS,     MT_ST_CLEARBOOLEANS      lub
              MT_ST_DEFBOOLEANS  dodaną  za  pomocą bitowego OR do dowolnej kombinacji poniższych
              opcji. Użycie MT_ST_BOOLEANS powoduje nadanie wszystkim opcjom wartości podanych na
              odpowiednich  polach  bitowych.  Przy  MT_ST_SETBOOLEANS  ustawione  zostaną  tylko
              wybrane  opcje,  natomiast  przy  MT_ST_DEFBOOLEANS  tylko  wybrane  opcje  zostaną
              usunięte.

              Za  pomocą  MT_ST_DEFBOOLEANS ustawiane są domyślne opcje dla urządzenia taśmowego.
              Nieaktywne urządzenia taśmowe (np. urządzenia o numerze podrzędnym 32 lub  160)  są
              aktywowane po pierwszym ustawieniu dla nich domyślnych opcji. Aktywowane urządzenie
              dziedziczy od urządzenia aktywowanego  podczas  startu  systemu  opcje,  które  nie
              zostały jawnie podane.

              Dostępne są następujące opcje logiczne:

              MT_ST_BUFFER_WRITES (Domyślnie: włączona)
                     Buforowanie  wszystkich  operacji  zapisu  w trybie o stałej długości bloku.
                     Jeśli ta opcja jest wyłączona i napęd używa  stałej  długości  bloku,  wtedy
                     wszystkie  operacje  zapisu  muszą  dotyczyć  wielokrotności długości bloku.
                     Opcja ta powinna być  wyłączona,  jeśli  chcemy  w  sposób  pewny  zapisywać
                     archiwa składające się z wielu wolumenów.

              MT_ST_ASYNC_WRITES (Domyślnie: włączona)
                     Gdy  opcja  ta  jest  włączona,  wtedy operacje zapisu przekazują sterowanie
                     natychmiast, bez oczekiwania na przesłanie informacji do napędu, jeśli tylko
                     dane  mieszczą  się  w buforze sterownika.  Stopień wypełnienia bufora, przy
                     którym zostanie wydane polecenie zapisu  SCSI,  jest  określony  przez  próg
                     zapisu.  Wszystkie  błędy  zgłoszone  przez  napęd  będą  wstrzymane  aż  do
                     następnej operacji. Opcja ta powinna być wyłączona, jeśli  chcemy  w  sposób
                     pewny zapisywać archiwa składające się z wielu wolumenów.

              MT_ST_READ_AHEAD (Domyślnie: włączona)
                     Opcja   ta  powoduje  zapewnienie  przez  sterownik  buforowania  i  odczytu
                     wyprzedzającego w trybie o  stałej  długości  bloku.  Jeśli  ta  opcja  jest
                     wyłączona  i  napęd używa bloków o stałej długości, wtedy wszystkie operacje
                     odczytu muszą dotyczyć wielokrotności długości bloku.

              MT_ST_TWO_FM (Domyślnie: wyłączona)
                     Opcja ta zmienia zachowanie sterownika w momencie zamknięcia pliku.   Zwykle
                     towarzyszy  temu  zapisanie pojedynczego znacznika końca pliku.  Jeśli opcja
                     jest włączona, sterownik zapisze dwa znaczniki i cofnie się przed drugi.

                     Uwaga: Ta opcja nie powinna być włączona w przypadku napędów  QIC,  ponieważ
                     nie  są one w stanie nadpisać danych na znaczniku pliku. Napędy te wykrywają
                     koniec zapisanych danych poprzez sprawdzenie, czy taśma jest pusta,  zamiast
                     stwierdzania  dwóch  kolejnych  znaczników  końca  pliku.  Większość  innych
                     współczesnych  napędów  również  wykrywa  koniec  zapisanych  danych,   więc
                     posługiwanie  się  dwoma znacznikami końca pliku jest niezbędne jedynie przy
                     wymianie taśm z niektórymi innymi systemami.

              MT_ST_DEBUGGING (Domyślnie: wyłączona)
                     Ta opcja włącza  wypisywanie  przez  sterownik  komunikatów  diagnostycznych
                     (skuteczne tylko gdy sterownik został skompilowany ze zdefiniowaną niezerową
                     wartością DEBUG).

              MT_ST_FAST_EOM (Domyślnie: wyłączona)
                     Włączenie tej opcji powoduje, że polecenia MTEOM są przesyłane  bezpośrednio
                     do napędu, potencjalnie przyspieszając operację, lecz jednocześnie powodując
                     utratę przez sterownik informacji o  aktualnym  położeniu  taśmy  -  numerze
                     pliku,  zwykle  przekazywanego  jako  wynik zapytania MTIOCGET.  Jeśli opcja
                     MT_ST_FAST_EOM jest wyłączona,  sterownik  będzie  odpowiadał  na  polecenie
                     MTEOM przewijaniem taśmy plik po pliku.

              MT_ST_AUTO_LOCK (Domyślnie: wyłączona)
                     When  this  option is true, the drive door is locked when the device file is
                     opened and unlocked when it is closed.

              MT_ST_DEF_WRITES (Domyślnie: wyłączona)
                     Opcje taśmy (długość bloku, tryb, kompresja itp.)  mogą  ulec  zmianie  przy
                     przełączaniu  z jednego urządzenia skojarzonego z napędem na inne urządzenia
                     skojarzone z tym samym napędem, w zależności od definicji tych urządzeń.  Ta
                     opcja  określa,  kiedy sterownik powinien wymusić zmiany wysyłając polecenia
                     SCSI  oraz  kiedy  należy   polegać   na   właściwościach   autodetekcyjnych
                     urządzenia.   Jeśli  opcja  ta  jest  wyłączona,  sterownik  będzie  wysyłać
                     polecenia SCSI natychmiast po zmianie urządzenia. Jeśli jest  ona  włączona,
                     polecenia  SCSI  nie zostaną wysłane dopóki nie pojawi się żądanie zapisu. W
                     tym przypadku firmware napędu może dokonywać  podczas  odczytu  autodetekcji
                     struktury  taśmy,  a  polecenia  SCSI  mają na celu jedynie zapewnienie, aby
                     zapis na taśmie odbywał się zgodnie z właściwą specyfikacją.

              MT_ST_CAN_BSR (Domyślnie: wyłączona)
                     When read-ahead is used, the tape must sometimes be spaced backward  to  the
                     correct  position  when  the  device is closed and the SCSI command to space
                     backward over records is used for this purpose.   Some  older  drives  can't
                     process  this  command  reliably and this option can be used to instruct the
                     driver not to use the command.  The end result is that, with read-ahead  and
                     fixed-block  mode,  the  tape  may not be correctly positioned within a file
                     when the device is closed.  With Linux 2.6, the default is true  for  drives
                     supporting SCSI-3.

              MT_ST_NO_BLKLIMS (Domyślnie: wyłączona)
                     Niektóre  napędy nie obsługują polecenia SCSI READ BLOCK LIMITS. Jeśli opcja
                     ta jest włączona,  sterownik  nie  używa  tego  polecenia.  Wadą  jest  brak
                     możliwości sprawdzenia przez sterownik przed wysłaniem polecenia, czy zadana
                     długość bloku jest akceptowana przez napęd.

              MT_ST_CAN_PARTITIONS (Domyślnie: wyłączona)
                     Opcja ta włącza obsługę kilku stref na jednej taśmie. Dotyczy ona wszystkich
                     urządzeń skojarzonych z napędem.

              MT_ST_SCSI2LOGICAL (Domyślnie: wyłączona)
                     Ta   opcja   poleca   sterownikowi   używanie   logicznych   adresów  bloków
                     zdefiniowanych   w   standardzie   SCSI-2   podczas   wykonywania   operacji
                     wyszukiwania  (seek)  oraz  "tell"  (dla poleceń MTSEEK i MTIOCPOS oraz przy
                     zmianie strefy taśmy).  W przeciwnym razie używane są adresy specyficzne dla
                     urządzenia.  Włączenie tej opcji jest wysoce zalecane, jeśli napęd obsługuje
                     adresy logiczne, gdyż zliczają one również znaczniki plików. Niektóre napędy
                     obsługują wyłącznie logiczne adresy bloków.

              MT_ST_SYSV (Domyślnie: wyłączona)
                     Gdy  ta opcja jest włączona, urządzenia taśmowe używają semantyki Systemu V.
                     W  przeciwnym  razie  używana  jest  semantyka  BSD.  Najważniejsza  różnica
                     pomiędzy  tymi  semantykami  polega  na  tym,  co się dzieje, gdy urządzenie
                     używane do odczytu jest zamykane: w semantyce SYSV taśma jest przewijana  do
                     przodu  poza  najbliższy znacznik pliku, jeśli nie stało się to wcześniej. W
                     semantyce BSD pozycja taśmy nie jest zmieniana.

              MT_NO_WAIT (Domyślnie: wyłączona)
                     Włącza tryb natychmiastowy niektórych poleceń, np. rewind  -  nie  czeka  na
                     zakończenie polecenia.

              Przykład:

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

              Domyślny  rozmiar bloku dla urządzenia można ustawić przy użyciu MT_ST_DEF_BLKSIZE,
              a domyślny kod gęstości można ustawić przy użyciu MT_ST_DEFDENSITY.  Wartości  tych
              parametrów powinny być dodane za pomocą bitowej alternatywy (OR) kodu operacji.

              With  Linux  2.1.x  and  later,  the  timeout values can be set with the subcommand
              MT_ST_SET_TIMEOUT ORed with the timeout in seconds.  The  long  timeout  (used  for
              rewinds   and  other  commands  that  may  take  a  long  time)  can  be  set  with
              MT_ST_SET_LONG_TIMEOUT.  The kernel defaults are very long  to  make  sure  that  a
              successful  command  is  not timed out with any drive.  Because of this, the driver
              may seem stuck even if it is only waiting for the timeout.  These commands  can  be
              used  to  set more practical values for a specific drive.  The timeouts set for one
              device apply for all devices linked to the same drive.

              Starting from Linux 2.4.19 and Linux 2.5.43, the driver supports a status bit which
              indicates  whether  the  drive  requests cleaning.  The method used by the drive to
              return cleaning information is set using  the  MT_ST_SEL_CLN  subcommand.   If  the
              value is zero, the cleaning bit is always zero.  If the value is one, the TapeAlert
              data defined in the SCSI-3 standard is used (not yet implemented).  Values 2–17 are
              reserved.   If  the  lowest eight bits are >= 18, bits from the extended sense data
              are used.  The bits 9–16 specify a mask to select the bits to look at and the  bits
              17–23 specify the bit pattern to look for.  If the bit pattern is zero, one or more
              bits under the mask indicate the cleaning request.  If the pattern is nonzero,  the
              pattern must match the masked sense data byte.

   MTIOCGET  odczytanie stanu
       To polecenie wykorzystuje argument typu (struct mtget *).

           /* struktura dla MTIOCGET - odczytanie stanu taśmy magn. */
           struct mtget {
               long     mt_type;
               long     mt_resid;
               /* Następne rejestry są specyficzne dla urządzenia */

               long     mt_dsreg;
               long     mt_gstat;
               long     mt_erreg;
               /* Kolejne dwa pola nie zawsze są używane */
               daddr_t  mt_fileno;
               daddr_t  mt_blkno;
           };

       mt_type
              Plik  nagłówkowy definiuje wiele możliwych wartości mt_type, lecz bieżący sterownik
              raportuje jedynie typy podstawowe MT_ISSCSI1 (Generic SCSI-1 tape) oraz  MT_ISSCSI2
              (Generic SCSI-2 tape).

       mt_resid
              zawiera numer strefy bieżącej taśmy.

       mt_dsreg
              raportuje bieżące ustawienia długości bloku (w najniższych 24 bitach) oraz gęstości
              zapisu (w 8 najwyższych bitach). Pola są  zdefiniowane  przez  MT_ST_BLKSIZE_SHIFT,
              MT_ST_BLKSIZE_MASK, MT_ST_DENSITY_SHIFT i MT_ST_DENSITY_MASK.

       mt_gstat
              raportuje   podstawowe   (niezależne  od  urządzenia)  informacje  o  stanie.  Plik
              nagłówkowy zawiera definicje  makrodefinicji  do  testowania  przekazywanych  bitów
              stanu:

              GMT_EOF(x)
                     Taśma  została  ustawiona  tuż  za znacznikiem pliku (zawsze nieprawdziwe po
                     poleceniu MTSEEK).

              GMT_BOT(x)
                     Taśma została ustawiona na początku pierwszego pliku (zawsze nieprawdziwe po
                     poleceniu MTSEEK).

              GMT_EOT(x)
                     Wykonanie polecenia spowodowało osiągnięcie fizycznego końca nośnika.

              GMT_SM(x)
                     Taśma  jest  aktualnie ustawiona na znaczniku (setmark) (zawsze nieprawdziwe
                     po poleceniu MTSEEK).

              GMT_EOD(x)
                     Taśma jest ustawiona na końcu zapisanych danych.

              GMT_WR_PROT(x)
                     Napęd jest chroniony przed zapisem. W przypadku niektórych urządzeń może  to
                     również oznaczać, że napęd nie obsługuje zapisu na bieżącym typie nośnika.

              GMT_ONLINE(x)
                     Ostatnie  wykonanie  funkcji  open(2)  zastało  napęd  gotowy do działania z
                     odpowiednio umiejscowionym nośnikiem.

              GMT_D_6250(x)
              GMT_D_1600(x)
              GMT_D_800(x)
                     Ta "podstawowa" informacja o stanie urządzenia  zawiera  również  ustawienia
                     gęstości zapisu, lecz jedynie dla 9-ścieżkowych ½" urządzeń.

              GMT_DR_OPEN(x)
                     Brak taśmy w napędzie.

              GMT_IM_REP_EN(x)
                     Tryb  natychmiastowego raportowania. To pole bitowe jest ustawiane na 1, gdy
                     nie ma gwarancji, że dane zostały fizycznie zapisane  na  taśmie  do  chwili
                     zakończenia  funkcji  zapisu.  Natomiast jest ustawiane na zero tylko wtedy,
                     gdy  sterownik  nie  buforuje  danych  i  napęd  został  ustawiony  na   ich
                     niebuforowanie.

              GMT_CLN(x)
                     The  drive has requested cleaning.  Implemented since Linux 2.4.19 and Linux
                     2.5.43.

       mt_erreg
              Jedyne pole zdefiniowane w mt_erreg to licznik naprawionych błędów, który  znajduje
              sie   w  16  niskich  bitach  (jak  to  zdefiniowano  przez  MT_ST_SOFTERR_SHIFT  i
              MT_ST_SOFTERR_MASK).  Z powodu  niezgodności  w  sposobie  zgłaszania  naprawionych
              błędów  przez  napędy,  licznik  ten często nie jest obsługiwany (większość napędów
              domyślnie nie zgłasza naprawionych błędów, ale można  to  zmienić  poleceniem  SCSI
              "MODE SELECT").

       mt_fileno
              podaje  bieżący numer pliku (licząc od zera). W przypadku gdy  numer pliku nie jest
              znany (np. po MTBSS lub MTSEEK), przekazywana jest wartość -1.

       mt_blkno
              raportuje numer bloku (licząc od zera) wewnątrz bieżącego pliku.  Gdy  numer  bloku
              nie  jest  znany  (np.  po  poleceniach MTBSF, MTBSS lub MTSEEK), przekazywana jest
              wartość -1.

   MTIOCPOS  odczytanie położenia taśmy
       To polecenie używa argumentu typu (struct mtpos *) i podaje bieżący numer bloku  taśmy  (w
       sensie,  w  jakim go rozumie napęd), co nie jest równoważne z mt_blkno przekazywanym przez
       MTIOCGET. Musi to być urządzenie SCSI-2, które obsługuje polecenie  READ  POSITION  (adres
       specyficzny  dla  urządzenia)  lub  urządzenie SCSI-1 zgodne z Tandberg (Tandberg, Archive
       Viper, Wangtek, ...).

           /* struktura dla MTIOCPOS - odczytanie położenia taśmy magn. */
           struct mtpos {
               long mt_blkno;    /* numer bieżącego bloku */
           };

WARTOŚĆ ZWRACANA

       EACCES Nastąpiła próba zapisu lub skasowania taśmy chronionej przed zapisem. (Ten błąd nie
              jest wykrywany podczas wykonywania funkcji open(2)).

       EBUSY  Urządzenie  jest  aktualnie  w  użyciu  lub  sterownikowi nie udało się przydzielić
              pamięci dla bufora.

       EFAULT Parametry polecenia wskazują na obszar pamięci nie należący do procesu wywołującego
              funkcję.

       EINVAL W  wywołaniu  ioctl(2) podano niedozwolony argument lub podano niedozwolony rozmiar
              bloku.

       EIO    Wydane polecenie nie może zostać zrealizowane.

       ENOMEM The byte count in read(2)  is smaller than the next physical  block  on  the  tape.
              (Before Linux 2.2.18 and Linux 2.4.0 the extra bytes have been silently ignored.)

       ENOSPC Operacja zapisu nie może zostać zakończona ponieważ taśma osiągnęła koniec nośnika.

       ENOSYS Nieznana funkcja ioctl(2).

       ENXIO  Podczas otwierania, takie urządzenie nie istnieje.

       EOVERFLOW
              Nastąpiła próba odczytania lub zapisu bloku o zmiennej długości, który jest większy
              niż wewnętrzny bufor sterownika.

       EROFS  Wystąpiła próba otwarcia z opcją O_WRONLY lub O_RDWR, podczas  gdy  taśma  znajduje
              się w napędzie chronionym przed zapisem.

PLIKI

       /dev/st*
              automatycznie przewijające urządzenia taśm SCSI

       /dev/nst*
              nieprzewijające urządzenia taśm SCSI

UWAGI

       •  Podczas   wymiany  danych  pomiędzy  systemami,  oba  systemy  muszą  uzgodnić  długość
          fizycznego bloku na taśmie. Parametry napędu po starcie systemu często  różnią  się  od
          używanych  dla  danego  urządzenia  przez  większość  systemów  operacyjnych. Większość
          systemów używa napędów w trybie o  zmiennej  długości  bloku,  o  ile  napęd  ten  tryb
          obsługuje. Dotyczy to większości współczesnych napędów, włączając w to napędy DAT, 8 mm
          napędy wybierania spiralnego, napędy DLT itp. Można doradzić używanie  tych  napędów  w
          trybie  o  zmiennej  długości  bloku  również  w  Linuksie  (tzn.  użycie  MTSETBLK lub
          MTSETDEFBLK przy starcie systemu w celu ustawienia tego  trybu),  przynajmniej  podczas
          wymiany  danych z obcym systemem. Wadą tego jest konieczność użycia dość długiego bloku
          na taśmie, aby otrzymać akceptowalną wydajność transferu na magistrali SCSI.

       •  Wiele programów (np. tar(1)) pozwala użytkownikowi na określenie czynnika określającego
          rozmiar  bloku w linii poleceń. Należy zauważyć, że określa to długość fizycznego bloku
          na taśmie jedynie w trybie o zmiennej długości bloku.

       •  Aby można było używać napędów  taśm  SCSI,  to  podstawowy  sterownik  SCSI,  sterownik
          kontrolera  SCSI oraz sterownik taśm SCSI muszą być wkompilowane w jądro lub załadowane
          jako moduły. Jeśli nie ma sterownika taśm SCSI, napęd zostanie rozpoznany, ale  opisana
          na tej stronie obsługa taśm nie będzie dostępna.

       •  Sterownik  zapisuje komunikaty o błędach na konsolę lub do logów. Kody SENSE zapisane w
          niektórych komunikatach są automatycznie tłumaczone  na  tekst,  jeśli  w  konfiguracji
          jądra włączono opcję rozwlekłych komunikatów SCSI.

       •  Wewnętrzne  buforowanie  jądra  pozwala  na  dobrą przepustowość w trybie o określonych
          blokach również przy niewielkiej liczbie bajtów odczytywanych (read(2)) i  zapisywanych
          (write(2)).  Przy transferach bezpośrednich nie jest to możliwe i może stanowić niemiłą
          niespodziankę przy przejściu na jądro 2.6. Rozwiązaniem jest  nakazanie  oprogramowaniu
          użycie  większych  transferów  (często  - nakazanie użycia większych bloków). Jeśli nie
          jest to możliwe, transfery bezpośrednie mogą być wyłączone.

ZOBACZ TAKŻE

       mt(1)

       Plik drivers/scsi/README.st lub  Documentation/scsi/st.txt  (jądra  w  wersji  >=  2.6)  w
       drzewie  źródeł jądra Linux zawierający najświeższe informacje dotyczące sterownika i jego
       możliwości konfiguracyjnych.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony  podręcznika  są:  Piotr  Pogorzelski
       <piotr.pogorzelski@ippt.gov.pl>,   Andrzej   Krzysztofowicz  <ankry@green.mf.pg.gda.pl>  i
       Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe  informacje  o  warunkach  licencji
       można   uzyskać   zapoznając   się   z   GNU   General   Public   License   w   wersji   3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub  nowszej.  Nie   przyjmuje   się   ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres listy dyskusyjnej
       ⟨manpages-pl-list@lists.sourceforge.net⟩.