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

Linux                                          11 kwietnia 2020 r.                                         ST(4)