Provided by: manpages-pl_4.13-4_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.   In kernels before 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).

       Rozmiar wewnętrznego bufora sterownika jest określony przez stałą  czasu  kompilacji,  ale
       można go zmienić za pomocą opcji startowej jądra. Dodatkowo, sterownik próbuje przydzielać
       większy  bufor  tymczasowy,  jeśli  zajdzie  taka  potrzeba  w  trakcie  pracy.  Jednakże,
       przydzielanie  podczas pracy dużych ciągłych bloków pamięci może się nie udać i zaleca się
       nie polegać za bardzo na  przydzielaniu  buforów  dynamicznych  w  jądrach  starszych  niż
       2.1.121 (dotyczy to także ładowania na żądanie sterownika za pomocą kerneld lub 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.

       Od jądra 2.6.2, sterownik eksportuje  do  katalogu  sysfs  /sys/class/scsi_tape  dołączone
       urządzenia i część parametrów przypisanych do urządzenia.

   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.

       W trybie o stałej długości bloku ilość odczytywanych bajtów może być dowolna, gdy włączone
       jest buforowanie. Musi natomiast być wielokrotnością długości bloku, gdy buforowanie  jest
       wyłączone.  Jądra  wcześniejsze niż 2.1.121 pozwalały na zapis dowolnej liczby bajtów przy
       włączonym buforowaniu.   Natomiast  w  pozostałych  przypadkach  (jądra  wcześniejsze  niż
       2.1.121  z  wyłączonym buforowaniem oraz nowsze jądra) liczba zapisywanych bajtów musi być
       wielokrotnością długości bloku na taśmie.

       W jądrze 2.6,  sterownik  stara  się  używać  bezpośrednich  transferów  pomiędzy  buforem
       użytkownika  a  urządzeniem.  Jeśli  nie  jest  to  możliwe, używany jest wewnętrzny bufor
       sterownika. Powodem, dla którego transfer bezpośredni nie jest użyty, może być niepoprawne
       wyrównanie  bufora  użytkownika  (domyślne  wynosi  512  bajtów,  ale może być zmienione w
       sterowniku HBA), niedostępność jednej lub więcej stron  bufora  użytkownika  dla  adaptera
       SCSI itp.

       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 */
           };

       Magnetic tape operations for normal tape use:

       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
              Usunięcie zapisu z taśmy. W jądrach 2.6 szybkie  usuwanie  (oznaczenie  taśmy  jako
              pustej)   jest   wykonywane,   gdy  argumentem  jest  zero.  W  przeciwnym  wypadku
              przeprowadzane jest długie usuwanie (usuwanie wszystkiego).

       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  kernel  version  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).

       Magnetic tape operations for setting of device options (by the superuser):

       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 in
              kernels 2.1 and later).  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)
                     Gdy  wykorzystywany  jest  odczyt  wyprzedzający,  taśma  musi  być  czasami
                     cofnięta do właściwej pozycji. Dzieje się to, gdy urządzenie jest zamykane i
                     wykorzystywane jest w  tym  celu  polecenie  SCSI  cofania  o  zadaną  ilość
                     rekordów.  Niektóre  starsze  napędy  nie  potrafią wykonać tego polecenia w
                     sposób pewny i opcja ta służy to zabronienia napędowi używania tych poleceń.
                     Końcowym  efektem  jest  nieprawidłowe  pozycjonowanie  taśmy  po zamknięciu
                     urządzenia przy włączonym odczycie wyprzedzającym w trybie o stałej długości
                     bloku.

              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)
                     When  this  option  is enabled, the tape devices use the System V semantics.
                     Otherwise, the BSD  semantics  are  used.   The  most  important  difference
                     between  the  semantics  is  what  happens when a device used for reading is
                     closed: in System V semantics the tape  is  spaced  forward  past  the  next
                     filemark  if this has not happened while using the device.  In BSD semantics
                     the tape position is not changed.

              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.

              W  jądrach  2.1.x  i  późniejszych  wartości czasu przeterminowania (timeout) można
              ustawić przy użyciu podpolecenia MT_ST_SET_TIMEOUT dodanego za pomocą  bitowego  OR
              do    czasu   przeterminowania   w   sekundach.   Długie   czasy   przeterminowania
              (wykorzystywane przy poleceniach przewijania i niektórych innych trwających  długo)
              można ustawić przy użyciu MT_ST_SET_LONG_TIMEOUT. Domyślne wartości jądra są bardzo
              długie,  aby   zapewnić,   że   pomyślnie   wykonywane   polecenie   nie   zostanie
              przeterminowane  przez żaden napęd. Z tego powodu niniejszy sterownik może sprawiać
              wrażenie zawieszonego, nawet gdy jedynie czeka  on  na  przeterminowanie  operacji.
              Polecenia   te  mogą  służyć  do  ustawienia  bardziej  praktycznych  wartości  dla
              konkretnego napędu. Czasy przeterminowania ustawione dla jednego urządzenia dotyczą
              wszystkich urządzeń skojarzonych z tym samym napędem.

              Starting  from  kernels  2.4.19  and 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): Napęd zażądał czyszczenia. Zaimplementowane w jądrach od wersji  2.4.19
                  and 2.5.43.

       mt_erreg
              The  only field defined in mt_erreg is the recovered error count in the low 16 bits
              (as defined by MT_ST_SOFTERR_SHIFT and MT_ST_SOFTERR_MASK).  Due to inconsistencies
              in the way drives report recovered errors, this count is often not maintained (most
              drives do not by default report soft errors but this can be  changed  with  a  SCSI
              MODE SELECT command).

       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 2.2.18 and 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

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

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

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

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

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

O STRONIE

       Angielska wersja tej strony  pochodzi  z  wydania  5.10  projektu  Linux  man-pages.  Opis
       projektu,  informacje  dotyczące  zgłaszania  błędów oraz najnowszą wersję oryginału można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

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