.\" -*- coding: UTF-8 -*- .\" Copyright 1995 Robert K. Nichols (Robert.K.Nichols@att.com) .\" Copyright 1999-2005 Kai Mäkisara (Kai.Makisara@kolumbus.fi) .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ST 4 "11 kwietnia 2020 r." Linux "Podręcznik programisty Linuksa" .SH NAZWA st \- urządzenie taśmy SCSI .SH SKŁADNIA .nf \fB#include \fP .PP \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIrequest\fP\fB [, (void *)\fP\fIarg3\fP\fB]);\fP \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCTOP, (struct mtop *)\fP\fImt_cmd\fP\fB);\fP \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCGET, (struct mtget *)\fP\fImt_status\fP\fB);\fP \fBint ioctl(int \fP\fIfd\fP\fB, MTIOCPOS, (struct mtpos *)\fP\fImt_pos\fP\fB);\fP .fi .SH OPIS Sterownik \fBst\fP 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 \fBst\fP przydzielony został numer główny 9. .PP 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), \fIn\fP, oraz numery urządzeń "bez przewijania", (\fIn\fP+ 128). Urządzenie otwarte przy wykorzystaniu głównego numeru podrzędnego otrzyma polecenie \fBREWIND\fP 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.) .PP 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.) .PP Pliki urządzeń są zwykle tworzone za pomocą poleceń: .PP .in +4n .EX 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 .EE .in .PP Brak jest odpowiadających urządzeń blokowych. .PP 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). .PP 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). .PP 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ń \fBioctl\fP(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. .PP 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). .PP Sterownik obsługuje \fBstrefy taśm\fP, 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ą \fBioctl\fP(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ą \fBioctl\fP(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 \fBioctl\fP(2) pozwalający sformatować taśmę z jedną lub dwiema strefami. .PP Urządzenie \fI/dev/tape\fP jest zwykle dowiązaniem zwykłym lub symbolicznym do domyślnego urządzenia reprezentującego taśmę magnetyczną w danym systemie. .PP Od jądra 2.6.2, sterownik eksportuje do katalogu sysfs \fI/sys/class/scsi_tape\fP dołączone urządzenia i część parametrów przypisanych do urządzenia. .SS "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. .PP 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. .PP 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. .PP 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. .PP Znacznik pliku jest zapisywany na taśmie automatycznie, jeśli ostatnią operacją na tej taśmie przed jej zamknięciem był zapis. .PP 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. .SS "Kontrolki systemowe (ioctl)" Sterownik obsługuje trzy wywołania funkcji \fBioctl\fP(2). Wywołania nierozpoznawane przez sterownik i \fBst\fP są przekazywane do sterownika \fBSCSI\fP. Poniższe definicje pochodzą z pliku \fI/usr/include/linux/mtio.h\fP: .SS "MTIOCTOP \(em wykonanie operacji na taśmie" .PP To wywołanie wymaga argumentu typu \fI(struct mtop\ *)\fP. Nie wszystkie napędy obsługują wszystkie polecenia. Jeśli napęd odrzuca polecenie, sterownik przekazuje wartość \fBEIO\fP. .PP .in +4n .EX /* Struktura dla polecenia MTIOCTOP dla taśmy magnetycznej: */ struct mtop { short mt_op; /* operacje zdefiniowane poniżej */ int mt_count; /* liczba powtórzeń operacji */ }; .EE .in .PP Magnetic tape operations for normal tape use: .TP \fBMTBSF\fP Przesunięcie do tyłu o \fImt_count\fP znaczników pliku. .TP \fBMTBSFM\fP Przesunięcie do tyłu o \fImt_count\fP znaczników pliku. Ustawienie taśmy po stronie EOT (końca taśmy) ostatniego znacznika pliku. .TP \fBMTBSR\fP Przesunięcie do tyłu o \fImt_count\fP rekordów (bloków taśmy). .TP \fBMTBSS\fP Przesunięcie do tyłu o \fImt_count\fP znaczników (setmarks). .TP \fBMTCOMPRESSION\fP Włączenie kompresji danych na taśmie dla danego napędu, gdy \fImt_count\fP jest niezerowe, wyłączenie kompresji, gdy \fImt_count\fP jest zerem. Polecenie to korzysta z MODE page 15 obsługiwanego przez większość urządzeń DAT. .TP \fBMTEOM\fP Przesunięcie do końca zapisanej części nośnika (w celu dogrania plików). .TP \fBMTERASE\fP 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). .TP \fBMTFSF\fP Przesunięcie do przodu o \fImt_count\fP znaczników pliku. .TP \fBMTFSFM\fP Przesunięcie do przodu o \fImt_count\fP znaczników pliku. Ustawienie taśmy po stronie BOT (początku taśmy) ostatniego znacznika pliku. .TP \fBMTFSR\fP Przesunięcie do przodu o \fImt_count\fP rekordów (bloków taśmy). .TP \fBMTFSS\fP Przesunięcie do przodu o \fImt_count\fP znaczników (setmarks). .TP \fBMTLOAD\fP 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 \fImt_count\fP jest równe stałej \fBMT_ST_HPLOADER_OFFSET\fP powiększonej o pewną liczbę, to ta liczba jest przesyłana do napędu dla celów sterowania automatycznym załadowaniem. .TP \fBMTLOCK\fP Zablokowanie kieszeni napędu taśm. .TP \fBMTMKPART\fP .\" commit 8038e6456a3e6f5c4759e0d73c4f9165b90c93e7 Format the tape into one or two partitions. If \fImt_count\fP is positive, it gives the size of partition 1 and partition 0 contains the rest of the tape. If \fImt_count\fP is zero, the tape is formatted into one partition. From kernel version 4.6, a negative \fImt_count\fP 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 \fBMT_ST_CAN_PARTITIONS\fP below). .TP \fBMTNOP\fP Brak operacji \(em jako efekt uboczny opróżnia bufor sterownika. Powinno się tego używać przed odczytaniem stanu za pomocą \fBMTIOCGET\fP. .TP \fBMTOFFL\fP Przewinięcie taśmy i odłączenie napędu. .TP \fBMTRESET\fP Inicjalizacja napędu. .TP \fBMTRETEN\fP Wyrównanie napięcia taśmy. .TP \fBMTREW\fP Przewinięcie. .TP \fBMTSEEK\fP Wyszukanie na taśmie bloku o numerze podanym w \fImt_count\fP. Ta operacja wymaga albo sterownika SCSI\-2, który obsługuje polecenie \fBLOCATE\fP (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 \fBMTIOCPOS\fP, gdy używany jest adres specyficzny dla urządzenia. .TP \fBMTSETBLK\fP Ustawienie długości bloku sterownika równej wartości podanej w \fImt_count\fP. Długość równa 0 wprowadza napęd w tryb bloków o zmiennej długości. .TP \fBMTSETDENSITY\fP Ustawienie gęstości zapisu taśmy zakodowanej w \fImt_count\fP. Kody określające gęstość zapisu obsługiwane przez dany napęd można znaleźć w jego dokumentacji. .TP \fBMTSETPART\fP Przełączenie aktywnej strefy na \fImt_count\fP. Strefy są numerowane od zera. Polecenie to nie jest dozwolone dla napędów, dla których nie włączono obsługi stref (zobacz \fBMT_ST_CAN_PARTITIONS\fP poniżej). .TP \fBMTUNLOAD\fP Wykonanie polecenia SCSI "unload" (nie wysuwa taśmy). .TP \fBMTUNLOCK\fP Odblokowanie kieszeni napędu taśm. .TP \fBMTWEOF\fP Zapisanie \fImt_count\fP znaczników pliku. .TP \fBMTWSM\fP Zapisanie \fImt_count\fP znaczników (setmarks). .PP Magnetic tape operations for setting of device options (by the superuser): .TP \fBMTSETDRVBUFFER\fP Set various drive and driver options according to bits encoded in \fImt_count\fP. 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.) .IP 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: .RS 12 .IP 0 4 Napęd nie będzie sygnalizować stanu \fBGOOD\fP po poleceniach zapisu, dopóki dane nie zostaną zapisane fizycznie na nośniku. .IP 1 Napęd może sygnalizować stan \fBGOOD\fP po poleceniach zapisu, gdy tylko wszystkie dane zostaną umieszczone w wewnętrznym buforze napędu. .IP 2 Napęd może sygnalizować stan \fBGOOD\fP 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. .RE .IP Aby kontrolować próg zapisu, wartość \fImt_count\fP musi zawierać stałą \fBMT_ST_WRITE_THRESHOLD\fP 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 \fBOPIS\fP powyżej). .IP Aby ustawić lub usunąć opcje logiczne, wartość \fBmt_count\fP musi zawierać jedną ze stałych \fBMT_ST_BOOLEANS\fP, \fBMT_ST_SETBOOLEANS\fP, \fBMT_ST_CLEARBOOLEANS\fP lub \fBMT_ST_DEFBOOLEANS\fP dodaną za pomocą bitowego OR do dowolnej kombinacji poniższych opcji. Użycie \fBMT_ST_BOOLEANS\fP powoduje nadanie wszystkim opcjom wartości podanych na odpowiednich polach bitowych. Przy \fBMT_ST_SETBOOLEANS\fP ustawione zostaną tylko wybrane opcje, natomiast przy \fBMT_ST_DEFBOOLEANS\fP tylko wybrane opcje zostaną usunięte. .IP "" Za pomocą \fBMT_ST_DEFBOOLEANS\fP 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. .IP "" Dostępne są następujące opcje logiczne: .RS .TP \fBMT_ST_BUFFER_WRITES\fP (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. .TP \fBMT_ST_ASYNC_WRITES\fP (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. .TP \fBMT_ST_READ_AHEAD\fP (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. .TP \fBMT_ST_TWO_FM\fP (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. .IP 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. .TP \fBMT_ST_DEBUGGING\fP (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ą \fBDEBUG\fP). .TP \fBMT_ST_FAST_EOM\fP (Domyślnie: wyłączona) Włączenie tej opcji powoduje, że polecenia \fBMTEOM\fP 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 \fBMTIOCGET\fP. Jeśli opcja \fBMT_ST_FAST_EOM\fP jest wyłączona, sterownik będzie odpowiadał na polecenie \fBMTEOM\fP przewijaniem taśmy plik po pliku. .TP \fBMT_ST_AUTO_LOCK\fP (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. .TP \fBMT_ST_DEF_WRITES\fP (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ą. .TP \fBMT_ST_CAN_BSR\fP (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. .TP \fBMT_ST_NO_BLKLIMS\fP (Domyślnie: wyłączona) Niektóre napędy nie obsługują polecenia SCSI \fBREAD BLOCK LIMITS\fP. 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. .TP \fBMT_ST_CAN_PARTITIONS\fP (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. .TP \fBMT_ST_SCSI2LOGICAL\fP (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ń \fBMTSEEK\fP i \fBMTIOCPOS\fP 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. .TP \fBMT_ST_SYSV\fP (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. .TP \fBMT_NO_WAIT\fP (Domyślnie: wyłączona) Włącza tryb natychmiastowy niektórych poleceń, np. rewind \- nie czeka na zakończenie polecenia. .PP Przykład: .PP .in +4n .EX 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); .EE .in .RE .IP "" Domyślny rozmiar bloku dla urządzenia można ustawić przy użyciu \fBMT_ST_DEF_BLKSIZE\fP, a domyślny kod gęstości można ustawić przy użyciu \fBMT_ST_DEFDENSITY\fP. Wartości tych parametrów powinny być dodane za pomocą bitowej alternatywy (OR) kodu operacji. .IP "" W jądrach 2.1.x i późniejszych wartości czasu przeterminowania (timeout) można ustawić przy użyciu podpolecenia \fBMT_ST_SET_TIMEOUT\fP 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 \fBMT_ST_SET_LONG_TIMEOUT\fP. 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. .IP "" 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 \fBMT_ST_SEL_CLN\fP 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\(en17 are reserved. If the lowest eight bits are >= 18, bits from the extended sense data are used. The bits 9\(en16 specify a mask to select the bits to look at and the bits 17\(en23 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. .SS "MTIOCGET \(em odczytanie stanu" .PP To polecenie wykorzystuje argument typu \fI(struct mtget\ *)\fP. .PP .in +4n .EX /* 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; }; .EE .in .TP \fImt_type\fP Plik nagłówkowy definiuje wiele możliwych wartości \fImt_type\fP, lecz bieżący sterownik raportuje jedynie typy podstawowe \fBMT_ISSCSI1\fP (Generic SCSI\-1 tape) oraz \fBMT_ISSCSI2\fP (Generic SCSI\-2 tape). .TP \fImt_resid\fP zawiera numer strefy bieżącej taśmy. .TP \fImt_dsreg\fP 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 \fBMT_ST_BLKSIZE_SHIFT\fP, \fBMT_ST_BLKSIZE_MASK\fP, \fBMT_ST_DENSITY_SHIFT\fP i \fBMT_ST_DENSITY_MASK\fP. .TP \fImt_gstat\fP raportuje podstawowe (niezależne od urządzenia) informacje o stanie. Plik nagłówkowy zawiera definicje makrodefinicji do testowania przekazywanych bitów stanu: .RS .HP 4 \fBGMT_EOF\fP(\fIx\fP): Taśma została ustawiona tuż za znacznikiem pliku (zawsze nieprawdziwe po poleceniu \fBMTSEEK\fP). .HP \fBGMT_BOT\fP(\fIx\fP): Taśma została ustawiona na początku pierwszego pliku (zawsze nieprawdziwe po poleceniu \fBMTSEEK\fP). .HP \fBGMT_EOT\fP(\fIx\fP): Wykonanie polecenia spowodowało osiągnięcie fizycznego końca nośnika. .HP \fBGMT_SM\fP(\fIx\fP): Taśma jest aktualnie ustawiona na znaczniku (setmark) (zawsze nieprawdziwe po poleceniu \fBMTSEEK\fP). .HP \fBGMT_EOD\fP(\fIx\fP): Taśma jest ustawiona na końcu zapisanych danych. .HP \fBGMT_WR_PROT\fP(\fIx\fP): 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. .HP \fBGMT_ONLINE\fP(\fIx\fP): Ostatnie wykonanie funkcji \fBopen\fP(2) zastało napęd gotowy do działania z odpowiednio umiejscowionym nośnikiem. .HP \fBGMT_D_6250\fP(\fIx\fP), \fBGMT_D_1600\fP(\fIx\fP), \fBGMT_D_800\fP(\fIx\fP): Ta "podstawowa" informacja o stanie urządzenia zawiera również ustawienia gęstości zapisu, lecz jedynie dla 9\-ścieżkowych \(12" urządzeń. .HP \fBGMT_DR_OPEN\fP(\fIx\fP): Brak taśmy w napędzie. .HP \fBGMT_IM_REP_EN\fP(\fIx\fP): 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. .HP \fBGMT_CLN\fP(\fIx\fP): Napęd zażądał czyszczenia. Zaimplementowane w jądrach od wersji 2.4.19 and 2.5.43. .RE .TP \fImt_erreg\fP The only field defined in \fImt_erreg\fP is the recovered error count in the low 16 bits (as defined by \fBMT_ST_SOFTERR_SHIFT\fP and \fBMT_ST_SOFTERR_MASK\fP). 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). .TP \fImt_fileno\fP podaje bieżący numer pliku (licząc od zera). W przypadku gdy numer pliku nie jest znany (np. po \fBMTBSS\fP lub \fBMTSEEK\fP), przekazywana jest wartość \-1. .TP \fImt_blkno\fP raportuje numer bloku (licząc od zera) wewnątrz bieżącego pliku. Gdy numer bloku nie jest znany (np. po poleceniach \fBMTBSF\fP, \fBMTBSS\fP lub \fBMTSEEK\fP), przekazywana jest wartość \-1. .SS "MTIOCPOS \(em odczytanie położenia taśmy" .PP To polecenie używa argumentu typu \fI(struct mtpos\ *)\fP i podaje bieżący numer bloku taśmy (w sensie, w jakim go rozumie napęd), co nie jest równoważne z \fImt_blkno\fP przekazywanym przez \fBMTIOCGET\fP. Musi to być urządzenie SCSI\-2, które obsługuje polecenie \fBREAD POSITION\fP (adres specyficzny dla urządzenia) lub urządzenie SCSI\-1 zgodne z Tandberg (Tandberg, Archive Viper, Wangtek, ...). .PP .in +4n .EX /* struktura dla MTIOCPOS \- odczytanie położenia taśmy magn. */ struct mtpos { long mt_blkno; /* numer bieżącego bloku */ }; .EE .in .SH "WARTOŚĆ ZWRACANA" .TP \fBEACCES\fP Nastąpiła próba zapisu lub skasowania taśmy chronionej przed zapisem. (Ten błąd nie jest wykrywany podczas wykonywania funkcji \fBopen\fP(2)). .TP \fBEBUSY\fP Urządzenie jest aktualnie w użyciu lub sterownikowi nie udało się przydzielić pamięci dla bufora. .TP \fBEFAULT\fP Parametry polecenia wskazują na obszar pamięci nie należący do procesu wywołującego funkcję. .TP \fBEINVAL\fP W wywołaniu \fBioctl\fP(2) podano niedozwolony argument lub podano niedozwolony rozmiar bloku. .TP \fBEIO\fP Wydane polecenie nie może zostać zrealizowane. .TP \fBENOMEM\fP .\" Precisely: Linux 2.6.0-test6 The byte count in \fBread\fP(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.) .TP \fBENOSPC\fP Operacja zapisu nie może zostać zakończona ponieważ taśma osiągnęła koniec nośnika. .TP \fBENOSYS\fP Nieznana funkcja \fBioctl\fP(2). .TP \fBENXIO\fP Podczas otwierania, takie urządzenie nie istnieje. .TP \fBEOVERFLOW\fP Nastąpiła próba odczytania lub zapisu bloku o zmiennej długości, który jest większy niż wewnętrzny bufor sterownika. .TP \fBEROFS\fP Wystąpiła próba otwarcia z opcją \fBO_WRONLY\fP lub \fBO_RDWR\fP, podczas gdy taśma znajduje się w napędzie chronionym przed zapisem. .SH PLIKI .TP \fI/dev/st*\fP automatycznie przewijające urządzenia taśm SCSI .TP \fI/dev/nst*\fP .\" .SH AUTHOR .\" The driver has been written by Kai M\(:akisara (Kai.Makisara@metla.fi) .\" starting from a driver written by Dwayne Forsyth. .\" Several other .\" people have also contributed to the driver. nieprzewijające urządzenia taśm SCSI .SH UWAGI .IP 1. 4 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 \fBMTSETBLK\fP lub \fBMTSETDEFBLK\fP 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. .IP 2. Wiele programów (np. \fBtar\fP(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. .IP 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. .IP 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. .IP 5. Wewnętrzne buforowanie jądra pozwala na dobrą przepustowość w trybie o określonych blokach również przy niewielkiej liczbie bajtów odczytywanych (\fBread\fP(2)) i zapisywanych (\fBwrite\fP(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. .SH "ZOBACZ TAKŻE" \fBmt\fP(1) .PP Plik \fIdrivers/scsi/README.st\fP lub \fIDocumentation/scsi/st.txt\fP (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. .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux \fIman\-pages\fP. 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/. .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Piotr Pogorzelski , Andrzej Krzysztofowicz i Michał Kułach . Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres .MT manpages-pl-list@lists.sourceforge.net .ME .