Linux.pl
Opcje wyszukiwania podręcznika man:
Lista stron man zaczynających się od znaku:
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   ALPHA   NUM   OTHER   ALL
ST(4)                   Podręcznik programisty Linuksa                   ST(4)

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 mag-
       netycznych SCSI.  Obecnie sterownik przejmuje kontrolę  nad  wszystkimi
       wykrytymi urządzeniami typu "sequential-access (dostępu sekwecyjnego)."
       Sterownikowi st przydzielony zostal numer główny 9.

       Każde  urządzenie  posiada  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żadanego 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 kom-
       pilacji, 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
       sterowac  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.

       Sterownik używa wewnętrznego bufora o rozmiarze dostatecznie dużym,  by
       pomieścił  co najmniej jeden blok taśmy. W kernelach wcześniejszych niż
       2.1.121 bufor ten jest przydzielany jako  jeden  ciągły  blok  pamięci.
       Ogranicza  to  rozmiar  bloku  na taśmie do największego ciągłego bloku
       pamięci, który może zostać przydzielony przez  procedurę  przydzielania
       pamięci  w jądrze.  Obecnie ograniczenie to wynosi 128 kB dla architek-
       tur 32-bitowych i  256  kB  dla  architektur  64-bitowych.  W  nowszych
       jądrach  sterownik  przydziela, jeśli trzeba, pamięć dla bufora w kilku
       częściach. Domyślna maksymalna liczba fragmentów wynosi 16. Oznacza to,
       że maksymalny rozmiar bloku jest bardzo duży (2 MB, jeśli uda się przy-
       dzielić 16 bloków po 128 kB).

       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 ker-
       nelach 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() i zmiany te  pozostają  akty-
       wne,  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 ono
       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  par-
       tycjami  dysków  [po  angielsku w obu przypadkach "partitions" - przyp.
       tłum.]. Taśma podzielona na strefy może być widziana  jako  kilka  log-
       icznych taśm na jednym nośniku.) Obsługę stref trzeba włączyć za pomocą
       ioctl. 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. 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
       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.

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

       W  trybie o zmiennej długości bloku ilość odczytywanych bajtów nie musi
       dokładnie odpowiadać długości bloku na taśmie. Jeśli liczba bajtów jest
       większa  niż  następny blok na taśmie, sterownik zwróci dane, a funkcja
       zwróci rozmiar bieżącego bloku. Jeśli długość bloku  jest  większa  niż
       liczba  bajtów,  zwrócona  zostanie  żądana  ilość danych, począwszy od
       początku bloku, a reszta bloku zostanie odrzucona.

       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 byforowaniem oraz nowsze jądra)
       liczba zapisywanych bajtów musi być wielokrotnością długości  bloku  na
       taśmie.

       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.

IOCTL
       Sterownik obsługuje trzy wywołania funkcji ioctl.  Wywołania nierozpoz-
       nawane  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 MTIOCTOP - dla polecenia op dla taśmy magnetycznej: */
       struct mtop {
           short  mt_op;    /* jedno ze zdefiniowanych poniżej poleceń*/
           int    mt_count; /* ile razy powtórzyć*/
       };

       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.  Ustaw-
                     ienie  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       Wyczyszczenie taśmy.
       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)  ostat-
                     niego 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łep 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      Sformatowanie  taśmy  na  jedną  lub  dwie  strefy.   Gdy
                     mt_count   jest   niezerowe,  określa  rozmiar  pierwszej
                     strefy,  a  druga  strefa  obejmuje  resztę  taśmy.   Gdy
                     mt_count  jest  zerem,  taśma jest formatowana jako jedna
                     strefa.  Polecenie to nie jest dozwolone dla napędów, dla
                     których nie włączono obsługi stref (zobacz MT_ST_CAN_PAR-
                     TITIONS poniżej).
       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         Prezewinię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  sa
                     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 superużytkownika):
       MTSETDRVBUFFER
               Ustawienie  różnych  opcji  napędu  i  sterownika,  zgodnie   z
               warościami  pól  bitowych  przekazanych w mt_count.  Dotyczy to
               sposobu buforowania przez sterownik, 13  logicznych  parametrów
               sterownika oraz progu zapisu bufora, domyślnej długości bloku i
               gęstości oraz czasów przeterminowania (tylko w jądrach >= 2.1).
               Pojedyncze  działanie  może zmienić ustawienia tylko dla jednej
               pozycji z powyższej listy  (parametry  logiczne  są  traktowane
               jako jedna całość).

               Wartość,  której 4 najwyższe bity są równe 0 zostanie wykorzys-
               tana 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 zanim 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_SET-
               BOOLEANS 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 wolu-
                      menó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 buforowa-
                      nia 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 zapisać 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ługi-
                      wanie się dwoma znacznikami końca pliku  jest  niezbędne
                      jedynie  przy  wymianie  taśm  z  niektórymi innymi sys-
                      temami.

               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 przwijaniem taśmy plik po pliku.
               MT_ST_AUTO_LOCK  (Domyślnie: wyłączona)
                      Jeśli ta opcja jest włączona, to kieszeń  napędu  będzie
                      blokowana  po  otwarciu  urządzenia,  a odblokowywana po
                      jego zamknięciu.
               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 sko-
                      jarzonego 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ć  zmi-
                      any  wysyłąją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 autode-
                      tekcji 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 try-
                      bie 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,  steronik  nie
                      używa  tego  polecenia. Wadą jest niemożność 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  podzczas
                      wykonywania  operacji  wyszukiwania  (seek)  oraz "tell"
                      (dla poleceń MTSEEK i MTIOCPOS oraz przy zmianie  strefy
                      taśmy).   W  przeciwnym  razie  używane są adresy specy-
                      ficzne 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  zamykanie:  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 ulega zmianie.
               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ą bitowego OR do kodu operacji.

               Przy  kernelu  2.1.x  i późniejszych, wartości czasu przetermi-
               nowania  (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ć  nie  przeterminowanie  pomyślnie  wykony-
               wanego  polecenia  przez  żaden  napęd. Z tego powodu niniejszy
               sterownik  może  sprawiać  wrażenie  zawieszonego,  newet   gdy
               jedynie  czaka  on  na  przeterminowanie operacji. Polecenia te
               mogą służyć do ustawienia bardziej  praktycznych  wartości  dla
               konkretnego  napędu.  Czasy przeterminowania ustawione dla jed-
               nego urządzenia dotyczą wszystkich urządzeń skojarzonych z  tym
               samym napędem.

   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;
           /* Kolejne rejestry są specyficzne dla urządzenia */
           long   mt_dsreg;
           long   mt_gstat;
           long   mt_erreg;
           /* Kolejne dwa pole 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 aktualny sterownik raportuje  jedynie  typy  podstawowe
                  MT_ISSCSI1  (Generic  SCSI-1  tape)  i  MT_ISSCSI2  (Generic
                  SCSI-2 tape).
       mt_resid   zawiera numer strefy bieżącej taśmy.
       mt_dsreg   raportuje  aktualne  ustawienia  długości   bloku   dla   (w
                  najniższych 24 bitach) oraz gęstości zapisu (w 8 najwyższych
                  bitach).  Te pola są zdefiniowane przez MT_ST_BLKSIZE_SHIFT,
                  MT_ST_BLKSIZE_MASK,    MT_ST_DENSITY_SHIFT    i   MT_ST_DEN-
                  SITY_MASK.
       mt_gstat   raprotuje podstawowe (niezależne od urządzenia) informacje o
                  atanie.  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 (set-
                      mark).  (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 przy-
                      padku niektórych urządzeń może to również  oznaczać,  że
                      napęd  nie  obsługuje  zapisu  na  nośniku tego typu, co
                      bieżący.
                  GMT_ONLINE(x): Ostatnie  wykonanie  funkcji  open()  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ż ustaw-
                      ienia gęstości zapisu, lecz  jedynie  dla  9-ścieżkowych
                      1/2" 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.
       mt_erreg   Jedyne pole zdefiniowane w mt_erreg jest to licznik  napraw-
                  ionych  błędów,  który znajduje sie w 16 niskich bitach (jak
                  to  zdefiniowano  przez  MT_ST_SOFTERR_SHIFT  i  MT_ST_SOFT-
                  ERR_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  raportuje  aktualny  numer  pliku (licząc od zera).  W przy-
                  padku gdy nie jest znany  numer  pliku  (np.  po  MTBSS  lub
                  MTSEEK), przekazywana jest wartość -1.
       mt_blkno   raportuje  numer  bloku (licząc od zera) wewnątrz aktualnego
                  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 raportuje aktualny
       numer bloku taśmy (w sensie, w jakim go rozumie  napęd),  co  nie  jest
       równoważne   mt_blkno  przekazywanemu  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; /* aktualny numer bloku */
       };

WARTOŚĆ ZWRACANA
       EIO           Wydane polecenie nie może zostać zrealizowane.

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

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

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

       ENXIO         Podczas otwierania, takie urządzenie nie istnieje.

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

       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.

       EINVAL        Funkcja   ioctl()  posiadała  niedozwolony  argument  lub
                     podano niedozwolony rozmiar bloku.

       ENOSYS        Nieznana funkcja ioctl().

       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

AUTOR
       Sterownik   został   napisany   przez   Kai'ego   Makisarę    <Kai.Mak-
       isara@metla.fi>  na  podstawie  sterownika  napisanego  przez  Dwayne'a
       Forsytha. Kilka innych osób również  wniosło  wkład  podczas  tworzenia
       sterownika.

ZOBACZ TAKŻE
       mt(1)

       Plik  README.st  w  źródłach  jądra  zawierający najświeższe informacje
       dotyczące sterownika i jego możliwości konfiguracyjnych.

UWAGI
       1.  Podczas  wymiany  danych  pomiędzy  systemami,  oba  systemy  muszą
       uzgodnić  długość fizycznego bloku na taśmie. Parametry napędu po star-
       cie systemu często różnią się od używanych dla danego urządzenia  przez
       większość  systemów  operacyjnych.  Wiekszość  systemów używa napędów w
       trybie o zmiennej długości bloku, o ile napęd ten tryb obsługuje. Doty-
       czy  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ć ackceptowalna wydajność transferu na magistrali
       SCSI.

       2. Wiele programów (np. tar) pozwala użytkownikowi na określenie  czyn-
       nika  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 zmien-
       nej długości bloku.

       3.  Aby  można  było używać napędów taśm SCSI, muszą być wkompilowane w
       kernel lub załadowane jako moduły: podstawowy sterownik SCSI, sterownik
       kontrolera  SCSI oraz sterownik taśm SCSI. Jeśli nie ma sterownika taśm
       SCSI, nepę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 konsoli / do logów. Kody
       SENSE zapisane w niektórych komunikatach są automatycznie tłumaczone na
       tekst,  o ile w konfiguracji jądra włączono rozwlekłe komuniakaty SCSI.

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

       Udziela się pozwolenia na dystrybucję  dosłownych  kopii  tej  dokumen-
       tacji,  pod  warunkiem,  że  każda  kopia  będzie zawierać informację o
       prawach autorskich oraz tę uwagę. Dodatkowe pozwolenia można znaleźć  w
       nagłówku w pliku źródłowym.

Linux 1.1.86                      1999-01-18                             ST(4)

Time taken: 0.00047 seconds


Created with the man page lookup class by Andrew Collington, php@amnuts.com