omd-Gerätedatei

Zweck

Bietet Zugriff auf den Einheitentreiber für optische Einheiten mit Schreib-/Lesezugriff.

Beschreibung

Die Gerätedatei Omd bietet Block-und Zeichenzugriff (unformatierter Zugriff) auf Platten im optischen Laufwerk mit Schreib-/Lesezugriff.

Das Präfix R eines Gerätedateinamens bedeutet, dass auf das Laufwerk als Roheinheit und nicht als Blockeinheit zugegriffen wird. Die Ausführung von unformatierter Ein-/Ausgabe mit einer optischen Platte erfordert, dass alle Datenübertragungen in Vielfachen der logischen Blocklänge der optischen Platte erfolgen. Außerdem müssen alle Lseek -Subroutinen, die für den Treiber für optische Einheiten mit Schreib-/Lesezugriff ausgeführt werden, den Dateioffsetzeiger auf einen Wert setzen, der ein Vielfaches der angegebenen logischen Blockgröße ist.

Der scdisk-SCSI-Einheitentreiber enthält weitere Informationen zu Implementierungsspezifikationen.

Optischer Einheitentreiber mit Lese-/Schreibberechtigung

Bei optischen Platten mit Schreib-/Lesezugriff, die in optischen Laufwerken mit Schreib-/Lesezugriff verwendet werden, handelt es sich um Datenträger, die Speicher für große Datenmengen bereitstellen. Der Blockzugriff auf optische Platten wird über die Gerätedateien /dev/omd0, /dev/omd1, ... /dev/omdnerreicht. Zeichenzugriff wird über die Gerätedateien /dev/romd0, /dev/romd1, ... /dev/romdnbereitgestellt.

Wenn eine optische Platte mit Schreib-/Lesezugriff aus dem Laufwerk für ein angehängtes optisches Dateisystem mit Schreib-/Lesezugriff ausgegeben wird, kann nicht mehr auf die Dateien auf der optischen Platte zugegriffen werden. Bevor Sie erneut versuchen, auf diese Dateien zuzugreifen, führen Sie die folgenden Schritte für ein Dateisystem aus, das von der optischen Platte mit Schreib-/Lesezugriff angehängt wurde:

  1. Stoppen Sie Prozesse, die Dateien im Dateisystem geöffnet haben.
  2. Versetzen Sie Prozesse, die über aktuelle Verzeichnisse im Dateisystem verfügen.
  3. Hängen Sie das Dateisystem ab.
  4. Hängen Sie das Dateisystem nach dem erneuten Einsetzen des Datenträgers erneut an.

Wenn diese Aktionen nicht funktionieren, führen Sie einen erzwungenen Unmount des Dateisystems durch und hängen Sie dann das Dateisystem erneut an.

Anmerkung: Durch erneutes Einsetzen der optischen Platte mit Schreib-/Lesezugriff wird das Problem nicht behoben. Stoppen Sie alle Prozesse (grafisch und ASCII) und erzwingen Sie dann das Abhängen des Dateisystems. Hängen Sie dann das Dateisystem erneut an. Nach der Ausführung dieser Prozedur können Sie alle Mann -Befehle erneut starten.

Einheitenabhängige Subroutinen

Die meisten optischen Operationen zum Lesen/Schreiben werden mit den Subroutinen Öffnen, Lesen, Schreibenund Schließen implementiert. Für einige Zwecke ist jedoch die Verwendung der (erweiterten) Subroutine OpenX erforderlich.

Die openx-Subroutine

Die Subroutine OpenX wird unterstützt, um zusätzliche Funktionen für die Öffnen -Sequenz bereitzustellen. Für die Ausführung ist die entsprechende Berechtigung erforderlich. Wenn versucht wird, die Subroutine openx ohne die erforderliche Berechtigung auszuführen, gibt die Subroutine den Wert zurück -1 und setzt die globale Variable errno auf den Wert EPERM.

ioctl-Subroutine

Die Operation IOCINFO der Subroutine ioctl gibt die devinfo -Struktur zurück, die in der Datei /usr/include/sys/devinfo.h definiert ist. Die Operation IOCINFO ist die einzige Operation, die für alle Einheitentreiber definiert ist, die die Subroutine ioctl verwenden. Andere ioctl -Operationen sind für den Typ des Einheitentreibers spezifisch. Für die Operation IOCINFO ist kein Diagnosemodus erforderlich.

Fehlerbedingungen

Mögliche Fehlernummer -Werte für ioctl-, Öffnen-, Lesen-und Schreiben -Subroutinen bei Verwendung der Sonderdatei Omd sind:

Element Beschreibung
EACCES Gibt einen der folgenden Umstände an:
  • Es wurde versucht, eine Einheit zu öffnen, die derzeit im Diagnosemodus oder im Modus für exklusiven Zugriff geöffnet ist.
  • Es wurde versucht, eine Diagnosemodussitzung auf einer bereits geöffneten Einheit zu öffnen.
  • Der Benutzer hat versucht, eine andere Subroutine als eine ioctl -oder Schließen -Subroutine im Diagnosemodus auszuführen.
  • Eine DKIOCMD-Befehl -Operation wurde auf einer Einheit versucht, die sich nicht im Diagnosemodus befindet.
  • Eine DKFORMAT -Operation wurde auf einer Einheit versucht, die sich nicht im exklusiven Zugriffsmodus befindet.
EBUSY Gibt einen der folgenden Umstände an:
  • Die Zieleinheit ist von einem anderen Initiator reserviert.
  • Es wurde versucht, eine Sitzung im Modus für exklusiven Zugriff auf einer bereits geöffneten Einheit zu öffnen.
EFAULT Zeigt eine unzulässige Benutzeradresse an.
EFORMAT Gibt an, dass die Zieleinheit unformatierte Datenträger oder Datenträger in einem inkompatiblen Format hat.
EINVAL Gibt einen der folgenden Umstände an:
  • Die Subroutine Lesen oder Schreiben hat einen Parameter NByte angegeben, der kein geradzahliges Vielfaches der Blockgröße ist.
  • Eine Prüfdatenpufferlänge von mehr als 255 Byte ist für eine DKIOWRSE -oder DKIORDSE@info:werden ioctl -Subroutinenoperation nicht zulässig.
  • Die Datenpufferlänge hat den in der Devinfo -Struktur für eine DKIORDSE@info:werden-, DKIOWRSE-oder DKIOCMD ioctl -Subroutinenoperation definierten Maximalwert überschritten.
  • Es wurde eine nicht unterstützte ioctl -Subroutinenoperation versucht.
  • Es wurde versucht, eine noch offene Einheit zu konfigurieren.
  • Es wurde ein unzulässiger Konfigurationsbefehl angegeben.
  • Ein Befehl DKPMR (Entfernen von Datenträgern verhindern), DKAMR (Entfernen von Datenträgern zulassen) oder DKEJECT-NAME (Datenträger ausgeben) wurde an eine Einheit gesendet, die austauschbare Datenträger nicht unterstützt.
  • Ein DKEJECT-NAME -Befehl (Eject Media) wurde an eine Einheit gesendet, deren Datenträger im Laufwerk gesperrt ist.
EIO Gibt einen der folgenden Umstände an:
  • Die Zieleinheit wurde nicht gefunden oder antwortet nicht.
  • Die Zieleinheit hat einen nicht behobenen Hardwarefehler angezeigt.
EMEDIEN Gibt einen der folgenden Umstände an:
  • Die Zieleinheit hat einen nicht behobenen Datenträgerfehler angegeben.
  • Der Datenträger wurde geändert.
EMDATEI Zeigt an, dass eine Öffnen -Operation für einen Adapter versucht wurde, der bereits über die maximal zulässige Anzahl geöffneter Einheiten verfügt.
ENODEW Gibt einen der folgenden Umstände an:
  • Es wurde versucht, auf eine nicht definierte Einheit zuzugreifen.
  • Es wurde versucht, eine nicht definierte Einheit zu schließen.
ENOTREADY (BEREIT) Gibt an, dass sich keine optische Platte mit Schreib-/Lesezugriff im Laufwerk befindet.
ENXIO Gibt einen der folgenden Umstände an:
  • Die Subroutine ioctl hat einen ungültigen Parameter angegeben.
  • Eine Lesen -oder Schreiben -Operation wurde über das Ende des physischen Datenträgers hinaus versucht.
EPERM Gibt an, dass die versuchte Subroutine die entsprechende Berechtigung erfordert.
ESTALE Zeigt an, dass eine schreibgeschützte optische Platte ausgegeben wurde (ohne zuerst vom Benutzer geschlossen zu werden) und dann entweder erneut eingesetzt oder durch eine zweite Platte ersetzt wurde.
EZEITDOUT Zeigt an, dass eine E/A-Operation den angegebenen Zeitgeberwert überschritten hat.
EWRPROTECT Gibt einen der folgenden Umstände an:
  • Eine Öffnen Operation, die den Modus Schreib-/Lesezugriff anfordert, wurde auf schreibgeschützten Datenträgern versucht.
  • Es wurde versucht, eine Schreiben -Operation für schreibgeschützte Datenträger auszuführen.

Dateien

Element Beschreibung
/dev/romd0, /dev/romd1,..., /d ev/romdn Bietet Zeichenzugriff auf den Einheitentreiber für optische Einheiten mit Schreib-/Lesezugriff.
/dev/omd0, /dev/omd1,..., /d ev/omdn Bietet Blockzugriff auf den Einheitentreiber für optische Einheiten mit Schreib-/Lesezugriff.