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>
Anmerkung: Die Gerätedateien /dev/rmt0 bis /dev/rmt255 bieten Zugriff auf Magnetbänder. Magnetbänder werden hauptsächlich für Sicherung, Dateiarchivierungen und anderen Offlinespeicher verwendet.

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.

Anmerkung: Es sind einheitenbezogene Adapterfehler vorhanden, die bei jedem Auftreten protokolliert werden.

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.