SCSI-Bandeinheitentreiber
Zweck
Unterstützt den Einheitentreiber für Massenspeichermedien mit sequenziellem Zugriff.
Syntax
#include <sys/devinfo.h>
#include <sys/scsi.h>
#include <sys/tape.h>Einheitenabhängige Subroutinen
Die meisten Bandoperationen werden mit den Subroutinen Öffnen, Lesen, Schreibenund Schließen implementiert. Die Subroutine OpenX muss jedoch verwendet werden, wenn die Einheit im Diagnosemodus geöffnet werden soll.
Subroutinen öffnen und schließen
Die Subroutine OpenX ist für die Verwendung durch die Diagnosebefehle und Dienstprogramme vorgesehen. Für die Ausführung ist die entsprechende Berechtigung erforderlich. Der Versuch, diese Subroutine ohne die entsprechende Berechtigung auszuführen, führt dazu, dass die Subroutine einen Wert von-1 und setzt den Fehler globale Variable zu EPERM .
Die Subroutine OpenX ermöglicht dem Einheitentreiber, in den Diagnosemodus zu wechseln, und inaktiviert die Befehlswiederholungslogik. Diese Aktion ermöglicht die Ausführung von ioctl-Operationen, die spezielle Funktionen im Zusammenhang mit der Diagnoseverarbeitung ausführen. Weitere OpenX -Funktionen wie erzwungene Öffnungsvorgänge und ständige Reservierungen sind ebenfalls verfügbar.
Der an die Subroutine OpenX übergebene Parameter Ext wählt die Operation aus, die für die Zieleinheit verwendet werden soll. Der Parameter ext ist in der Datei /usr/include/sys/scsi.h definiert. Dieser Parameter kann eine beliebige Kombination der folgenden Flagwerte enthalten, die logisch verknüpft sind:
| Flagwert | Beschreibung |
|---|---|
| SC_DIAGNOSE | Versetzt die ausgewählte Einheit in den Diagnosemodus. Dieser Modus ist singulär eintrittsfähig. Wenn sich eine Einheit im Diagnosemodus befindet, werden SCSI-Operationen während Öffnen -oder Schließen -Operationen ausgeführt und die Fehlerprotokollierung ist inaktiviert. Im Diagnosemodus werden nur die Operationen Schließen und ioctl akzeptiert. Alle anderen vom Gerät unterstützten Subroutinen geben einen Wert von zurück-1 , mit dem Fehler globale Variable auf einen Wert gesetzt von EACCESS (Zugang) . Eine Einheit kann nur im Diagnosemodus geöffnet werden, wenn die Zieleinheit derzeit nicht geöffnet ist. Wenn versucht wird, ein Gerät im Diagnosemodus zu öffnen und das Zielgerät bereits geöffnet ist, wird ein Wert von-1 wird zurückgegeben und die Fehler Die globale Variable ist gesetzt auf EACCESS (Zugang) . |
| SC_FORCED_OPEN | Erzwingt eine Rücksetzung der Buseinheit (BDR), unabhängig davon, ob die Einheit von einem anderen Initiator reserviert wurde. Die Zurücksetzung der SCSI-Buseinheit wird an die Einheit gesendet, bevor die Sequenz Öffnen beginnt. Andernfalls wird die Operation Öffnen normal ausgeführt. |
| SC_RETAIN_RESERVATION | Behält die Reservierung der Einheit nach einer Schließen -Operation bei, indem das Release nicht ausgegeben wird. Dieses Flag verhindert, dass andere Initiatoren die Einheit verwenden, es sei denn, sie unterbrechen die Reservierung der Hostmaschine. |
"SCSI-Optionen für die openx-Subroutine" in Programmierkonzepte für Kernelerweiterungen und Einheitenunterstützung enthält spezifischere Informationen zu den Operationen zum Öffnen.
ioctl, Subroutine
Die ioctl-Operation STIOCMD-BEFEHL bietet die Möglichkeit, SCSI-Befehle direkt an eine Bandeinheit zu senden. Dies ermöglicht einer Anwendung, bestimmte SCSI-Befehle auszugeben, die vom Bandeinheitentreiber nicht direkt unterstützt werden.
Zur Verwendung der Operation STIOCMD-BEFEHL muss die Einheit im Diagnosemodus geöffnet werden. Wenn dieser Befehl ausgeführt wird, während sich das Gerät nicht im Diagnosemodus befindet, wird ein Wert von-1 wird zurückgegeben und die Fehler Die globale Variable wird auf einen Wert von gesetzt EACCESS (Zugang) . Die Operation STIOCMD-BEFEHL übergibt die Adresse einer scsi_iocmd -Struktur. Diese Struktur ist definiert in der/usr/include/sys/scsi_buf.h Datei.
Informationen zum Absetzen der Parameter finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Fehlerbedingungen
Zusätzlich zu den aufgelisteten Fehlern sind die ioctl-, Öffnen-, Lesen-und Schreiben -Subroutinen für diese Einheit unter den folgenden Umständen nicht erfolgreich:
| Fehler | Beschreibung |
|---|---|
| EACCES | Zeigt an, dass ein Diagnosebefehl für eine Einheit ausgegeben wurde, die sich nicht im Diagnosemodus befindet |
| EAGAIN | Zeigt an, dass versucht wurde, eine Einheit zu öffnen, die bereits geöffnet war. |
| EBUSY | Gibt an, dass die Zieleinheit von einem anderen Initiator reserviert ist |
| EINVAL | Gibt an, dass der Wert O_ANWENDE als Modus zum Öffnen angegeben wird. |
| EINVAL | Gibt an, dass der von einer Lesen -oder Schreiben -Operation angegebene Parameter NByte kein Vielfaches der Blockgröße ist. |
| EINVAL | Gibt an, dass ein Parameter für eine ioctl-Operation ungültig ist. |
| EINVAL | Gibt an, dass die angeforderte ioctl-Operation auf der aktuellen Einheit nicht unterstützt wird. |
| EIO | Gibt an, dass das Bandlaufwerk zurückgesetzt oder das Band geändert wurde. Dieser Fehler wird beim Öffnen zurückgegeben, wenn die vorherige Bandoperation das Band beim Schließen hinter dem Bandanfang positioniert hat. |
| EIO | Gibt an, dass die Einheit nicht vorwärts oder rückwärts die Anzahl der Datensätze, die durch diest_countbevor ein EOM (Datenträgerende) oder eine Dateimarkierung festgestellt wird. |
| EMEDIEN | Gibt an, dass die Bandeinheit einen nicht behebbaren Datenträgerfehler festgestellt hat. |
| EMDATEI | Zeigt an, dass eine Öffnen -Operation für einen SCSI-Adapter versucht wurde, der bereits über die maximal zulässige Anzahl offener Einheiten verfügt. |
| ENOTREADY (BEREIT) | Gibt an, dass sich kein Band im Laufwerk befindet oder dass das Laufwerk nicht bereit ist. |
| ENXIO | Gibt an, dass versucht wurde, auf ein Band zu schreiben, das sich bei EOM befindet. |
| EPERM | Gibt an, dass diese Subroutine die entsprechende Berechtigung erfordert. |
| EZEITDOUT | Gibt an, dass ein Befehl das zulässige Zeitlimit überschritten hat. |
| EWRPROTECT | Zeigt an, dass eine Öffnen -Operation, die den Schreib-/Lesemodus anfordert, auf einem schreibgeschützten Band versucht wurde. |
| EWRPROTECT | Zeigt an, dass eine ioctl-Operation, die sich auf den Datenträger auswirkt, auf einem schreibgeschützten Band versucht wurde. |
Informationen zur Zuverlässigkeit und Wartungsfreundlichkeit
Von Bandeinheiten werden folgende Fehler zurückgegeben:
| Fehler | Beschreibung |
|---|---|
| ABGEBROCHENER BEFEHL | Gibt an, dass die Einheit den Befehl beendet hat. |
| Prüfen, ob Laufwerk leer ist. | Gibt an, dass ein Lesebefehl ein leeres Band festgestellt hat. |
| DATENSCHUTZ | Zeigt an, dass versucht wurde, auf einem schreibgeschützten Band zu schreiben. |
| GUTE FERTIGSTELLUNG | Zeigt an, dass der Befehl erfolgreich ausgeführt wurde. |
| Hardwarefehler | Zeigt an, dass während der Befehlsausführung oder während eines Selbsttests ein nicht behebbarer Hardwarefehler aufgetreten ist |
| Ungültige Anforderung | Gibt einen unzulässigen Befehl oder Befehlsparameter an. |
| Datenträgerfehler | Gibt an, dass der Befehl mit einer nicht behobenen Datenträgerfehlerbedingung beendet wurde. Diese Bedingung kann durch einen Bandfehler oder einen verschmutzten Kopf verursacht werden. |
| Nicht bereit | Gibt an, dass die logische Einheit offline ist. |
| Behobener Fehler | Gibt an, dass der Befehl erfolgreich war, nachdem eine Wiederherstellung angewendet wurde. |
| Einheit muss überprüft werden. | Gibt an, dass die Einheit zurückgesetzt oder eingeschaltet wurde. |
Datenträger-, Hardware-und abgebrochene Befehlsfehler aus der obigen Liste werden jedes Mal protokolliert, wenn sie auftreten. Der ABGEBROCHENER BEFEHL -Fehler kann behebbar sein, aber der Fehler wird protokolliert, wenn die Wiederherstellung fehlschlägt. Für die Fehlertypen BEHOBENER FEHLER und Behobener ABGEBROCHENER BEFEHL werden Schwellenwerte beibehalten; werden sie überschritten, wird ein Fehler protokolliert. Die Schwellenwerte werden dann gelöscht.
Fehlerdatensatzwerte für Datenträgerfehler der Bandeinheit
Die Felder, die in der Fehlersatzschablone für Bandeinheitendatenträgerfehler definiert sind, sind:
| Feld | Beschreibung |
|---|---|
| Comment | Entspricht einem Banddatenträgerfehler. |
| Class | Gleich H gibt einen Hardwarefehler an. |
| Report | Gleich TRUE, gibt an, dass dieser Fehler eingeschlossen werden soll, wenn ein Fehlerbericht generiert wird. |
| Log | Der Wert TRUE bedeutet, dass ein Fehlerprotokolleintrag erstellt werden soll, wenn dieser Fehler auftritt. |
| Alert | Der Wert FALSE bedeutet, dass dieser Fehler nicht alertfähig ist. |
| Err_Type | Entspricht PERM und gibt einen permanenten Fehler an. |
| Err_Desc | Entspricht 1332 und gibt einen Fehler bei einer Bandoperation an. |
| Prob_Causes | Entspricht 5003 und gibt Banddatenträger an. |
| User_Causes | Entspricht 5100 und 7401 und gibt eine Ursache an, die von dem Band bzw. dem fehlerhaften Datenträger ausgeht. |
| User_Actions | Entspricht 1601 und 0000 und gibt an, dass der austauschbare Datenträger ausgetauscht und die Operation wiederholt werden soll, und dass die Fehlerbestimmungsprozeduren ausgeführt werden sollen. |
| Inst_Causes | Ohne |
| Inst_Actions | Ohne |
| Fail_Causes | Entspricht 5003 und gibt Banddatenträger an. |
| Fail_Actions | Entspricht 1601 und 0000 und gibt an, dass der austauschbare Datenträger ausgetauscht und die Operation wiederholt werden soll und dass die Fehlerbestimmungsprozeduren ausgeführt werden sollen. |
DerDetail_Dataenthält den Befehlstyp, den Einheiten-und Adapterstatus sowie die Prüfdaten für Anforderungen von der fehlerhaften Einheit. DerDetail_DataFeld ist in der Struktur Fehler_rec enthalten. Diese Struktur ist in der Datei /usr/include/sys/errids.h definiert. Die sc_error_log_df -Struktur, die Informationen beschreibt, die in derDetail_Dataist in der Datei /usr/include/sys/scsi.h definiert.
Informationen zum Format der jeweiligen Prüfinformationen für Anforderungen finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Fehler-Datensatzwerte für Band-oder Hardwarefehler des abgebrochene Befehls
Die Felder in der Struktur err_hdr , wie in der Datei /usr/include/sys/erec.h für Hardwarefehler und abgebrochene Befehlsfehler definiert, lauten wie folgt:
| Feld | Beschreibung |
|---|---|
| Comment | Entspricht einem Fehler aufgrund einer Bandhardware oder eines abgebrochenen Befehls. |
| Class | Gleich H gibt einen Hardwarefehler an. |
| Report | Gleich TRUE, gibt an, dass dieser Fehler eingeschlossen werden soll, wenn ein Fehlerbericht generiert wird. |
| Log | Der Wert TRUE bedeutet, dass ein Fehlerprotokolleintrag erstellt werden soll, wenn dieser Fehler auftritt. |
| Alert | FALSE, wenn dieser Fehler nicht alertfähig ist. |
| Err_Type | Entspricht PERM und gibt einen permanenten Fehler an. |
| Err_Desc | Entspricht 1331 und gibt einen Bandlaufwerkfehler an. |
| Prob_Causes | Der Wert 6314 gibt einen Bandlaufwerkfehler an. |
| User_Causes | Ohne |
| User_Actions | Der Wert 0000 gibt an, dass Problembestimmungsprozeduren durchgeführt werden sollen. |
| Inst_Actions | Ohne |
| Fail_Causes | Die Werte 5003 und 6314 geben an, dass die Fehlerursache das Band bzw. das Bandlaufwerk ist. |
| Fail_Actions | 0000 für die Durchführung von Problembestimmungsprozeduren. |
DerDetail_Dataenthält den Befehlstyp, den Einheiten-und Adapterstatus sowie die Prüfdaten für Anforderungen von der fehlerhaften Einheit. DerDetail_DataFeld ist in der Struktur Fehler_rec enthalten. Diese Struktur ist in der Datei /usr/include/sys/errids.h definiert. Die sc_error_log_df -Struktur, die Informationen beschreibt, die in derDetail_Dataist in der Datei /usr/include/sys/scsi.h definiert.
Informationen zum Format der jeweiligen Prüfinformationen für Anforderungen finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Fehler-Satzwerte für Band-Behobener Fehlerschwellenwert überschritten
Die folgenden Felder sind in der Struktur err_hdr gemäß der Definition in der Datei /usr/include/sys/erec.h für behobene Fehler definiert, die den Schwellenwert überschritten haben:
| Feld | Beschreibung |
|---|---|
| Comment | Gibt an, dass der Schwellenwert für behobene Bandfehler überschritten wurde. |
| Class | Gleich H gibt einen Hardwarefehler an. |
| Report | Gleich TRUE, gibt an, dass dieser Fehler eingeschlossen werden soll, wenn ein Fehlerbericht generiert wird. |
| Log | Der Wert TRUE bedeutet, dass ein Fehlerprotokolleintrag erstellt werden soll, wenn dieser Fehler auftritt. |
| Alert | Der Wert FALSE bedeutet, dass dieser Fehler nicht alertfähig ist. |
| Err_Type | Entspricht PERM und gibt einen permanenten Fehler an. |
| Err_Desc | Entspricht 1331 und gibt einen Bandlaufwerkfehler an. |
| Prob_Causes | Entspricht 5003 und 6314. Die wahrscheinliche Ursache ist das Band bzw. das Bandlaufwerk. |
| User_Causes | Entspricht 5100 und 7401, was bedeutet, dass der Datenträger fehlerhaft ist und der Schreib-/Lesekopf verschmutzt ist. |
| User_Actions | Entspricht 1601 und 0000 und gibt an, dass austauschbare Datenträger ausgetauscht und die Operation wiederholt werden soll bzw. dass Fehlerbestimmungsprozeduren ausgeführt werden sollen. |
| Inst_Causes | Ohne |
| Inst_Actions | Ohne |
| Fail_Causes | Die Werte 5003 und 6314 geben an, dass die Ursache das Band bzw. das Bandlaufwerk ist. |
| Fail_Actions | Gleich 0000, um Problembestimmungsprozeduren auszuführen. |
DerDetail_Dataenthält den Befehlstyp, den Einheiten-und Adapterstatus sowie die Prüfdaten für Anforderungen von der fehlerhaften Einheit. Dieses Feld ist in der Struktur Fehler_rec enthalten. Die Struktur err_rec ist in der Datei /usr/include/sys/errids.h definiert. DerDetail_DataFeld gibt auch den Fehlertyp des überschrittenen Schwellenwerts an. Die sc_error_log_df -Struktur, die Informationen beschreibt, die in derDetail_Dataist in der Datei /usr/include/sys/scsi.h definiert.
Informationen zum Format der jeweiligen Prüfinformationen für Anforderungen finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Fehlerdatensatzwerte für SCSI-Bandadapter-Erkannte Fehler
Die Felder in der Struktur err_hdr , die in der Datei /usr/include/sys/erec.h für vom Adapter erkannte Fehler definiert sind, lauten wie folgt:
| Feld | Beschreibung |
|---|---|
| Comment | Entspricht einem vom SCSI-Bandadapter erkannten Fehler. |
| Class | Gleich H gibt einen Hardwarefehler an. |
| Report | Gleich TRUE, gibt an, dass dieser Fehler eingeschlossen werden soll, wenn ein Fehlerbericht generiert wird. |
| Log | Der Wert TRUE bedeutet, dass ein Fehlerprotokolleintrag erstellt werden soll, wenn dieser Fehler auftritt. |
| Alert | Der Wert FALSE bedeutet, dass dieser Fehler nicht alertfähig ist. |
| Err_Type | Entspricht PERM und gibt einen permanenten Fehler an. |
| Err_Desc | Entspricht 1331 und gibt einen Bandlaufwerkfehler an. |
| Prob_Causes | Entspricht 3300 und 6314 und gibt einen Adapter-bzw. Bandlaufwerkfehler an. |
| User_Causes | Ohne |
| User_Actions | Der Wert 0000 gibt an, dass Problembestimmungsprozeduren durchgeführt werden sollen. |
| Inst_Causes | Ohne |
| Inst_Actions | Ohne |
| Fail_Causes | Entspricht 3300 und 6314 und gibt einen Adapter-bzw. Bandlaufwerkfehler an. |
| Fail_Actions | Gleich 0000, um Problembestimmungsprozeduren auszuführen. |
DerDetail_Dataenthält den Befehlstyp und den Adapterstatus. Dieses Feld ist in der Struktur err_rec enthalten, die durch die Datei /usr/include/sys/err_rec.h definiert wird. Bei dieser Art von Fehler sind keine Prüfinformationen für die Anforderung verfügbar. Die Struktur sc_error_log_df beschreibt Informationen, die in derDetail_Dataund ist in der Datei /usr/include/sys/scsi.h definiert.
Informationen zum Format der jeweiligen Prüfinformationen für Anforderungen finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Fehler-Satzwerte für Bandlaufwerkreinigungsfehler
Einige Bandlaufwerke geben Fehler zurück, wenn sie gereinigt werden müssen. Fehler, die auftreten, wenn das Laufwerk gereinigt werden muss, werden unter dieser Klasse gruppiert.
| Feld | Beschreibung |
|---|---|
| Comment | Gibt an, dass das Bandlaufwerk gereinigt werden muss. |
| Class | Gleich H gibt einen Hardwarefehler an. |
| Report | Ist gleich TRUE und gibt an, dass dieser Fehler eingeschlossen werden soll, wenn ein Fehlerbericht generiert wird. |
| Log | Ist gleich TRUE und gibt an, dass ein Fehlerprotokolleintrag erstellt werden soll, wenn dieser Fehler auftritt. |
| Alert | Der Wert FALSE bedeutet, dass dieser Fehler nicht alertfähig ist. |
| Err_Type | Gleich TEMP, gibt einen temporären Fehler an. |
| Err_Desc | Gleich 1332, was auf einen Bandoperationsfehler hinweist. |
| Prob_Causes | Entspricht 6314 und gibt an, dass die wahrscheinliche Ursache das Bandlaufwerk ist. |
| User_Causes | Gleich 7401, gibt einen verschmutzten Schreib-/Lesekopf an. |
| User_Actions | Der Wert 0000 gibt an, dass Problembestimmungsprozeduren durchgeführt werden sollen. |
| Inst_Causes | Ohne |
| Inst_Actions | Ohne |
| Fail_Causes | Der Wert 6314 gibt an, dass die Ursache das Bandlaufwerk ist. |
| Fail_Actions | 0000 bedeutet, dass Problembestimmungsprozeduren ausgeführt werden sollen. |
DerDetail_DataDas Feld enthält den Befehlstyp und den Adapterstatus sowie die Prüfdaten für Anforderungen von der betreffenden fehlerhaften Einheit. Dieses Feld ist in der Struktur err_rec enthalten, die durch die Datei /usr/include/sys/errids.h definiert wird. Die Struktur sc_error_log_df beschreibt Informationen, die in derDetail_Dataund ist in der Datei /usr/include/sys/scsi.h definiert.
Informationen zum Format der jeweiligen Prüfinformationen für Anforderungen finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Fehler-Datensatzwerte für unbekannte Fehler
Fehler, die aus unbekannten Gründen auftreten, sind in dieser Klasse gruppiert. Datenschutzfehler fallen in diese Klasse. Diese Fehler, die vom Bandeinheitentreiber erkannt werden, werden am Bandlaufwerk nie erkannt.
Die Struktur err_hdr für unbekannte Fehler beschreibt die folgenden Felder:
| Feld | Beschreibung |
|---|---|
| Comment | Es ist ein unbekannter Fehler auf Band aufgetreten. |
| Class | Gleich allen Fehlerklassen. |
| Report | Gleich TRUE, gibt an, dass dieser Fehler eingeschlossen werden soll, wenn ein Fehlerbericht generiert wird. |
| Log | Entspricht TRUE und gibt an, dass bei Auftreten dieses Fehlers ein Fehlerprotokolleintrag erstellt werden soll. |
| Alert | Der Wert FALSE bedeutet, dass dieser Fehler nicht alertfähig ist. |
| Err_Type | Entspricht UNKN und gibt an, dass der Fehlertyp unbekannt ist. |
| Err_Desc | Gleich 0xFE00, gibt an, dass die Fehlerbeschreibung unbekannt ist. |
| Prob_Causes | Ohne |
| User_Causes | Ohne |
| User_Actions | Ohne |
| Inst_Causes | Ohne |
| Inst_Actions | Ohne |
| Fail_Causes | Gleich 0xFFFF, gibt an, dass die Fehlerursache unbekannt ist. |
| Fail_Actions | Der Wert 0000 gibt an, dass Problembestimmungsprozeduren ausgeführt werden sollen. |
DerDetail_Dataenthält den Befehlstyp und den Adapterstatus sowie die Prüfdaten für die Anforderung von der fehlerhaften Einheit. DerDetail_DataFeld ist in der Struktur Fehler_rec enthalten. Dieses Feld ist in der Datei /usr/include/sys/errids.h enthalten. Die Struktur sc_error_log_df beschreibt Informationen, die in derDetail_Dataund ist in der Datei /usr/include/sys/scsi.h definiert.
Informationen zum Format der jeweiligen Prüfinformationen für Anforderungen finden Sie im SCSI-Spezifikation (Small Computer System Interface) für die entsprechende Einheit.
Dateien
/dev/rmt0, /dev/rmt0.1, /dev/rmt0.2, ..., /dev/rmt0.7,
/dev/rmt1, /dev/rmt1.1, /dev/rmt1.2, ..., /dev/rmt1.7,...,
| Element | Beschreibung |
|---|---|
| /dev/rmt255, /dev/rmt255.1, /dev/rmt255.2, ..., /dev/rmt255.7 | Stellen Sie eine Schnittstelle bereit, damit SCSI-Einheitentreiber auf SCSI-Bandlaufwerke zugreifen können. |