Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cpio(1)

mt(1)

tar(1)

sgenio(7)

stape(7)

autoconf(8)

tpsetup(8)

mtio(7)                                                             mtio(7)

NAME
     mtio - Magnetband-Schnittstelle

BESCHREIBUNG
     Das IOS-Band-Subsystem /dev/iosb/[r]stapeppu[c][h][n][o][v][g] wird
     als Magnetband-Schnittstelle benutzt. Weitere Informationen hierzu
     finden Sie unter stape(7).

     Bei E/A-Subsystemen haben Dateinamen für Magnetbänder folgendes Format:

          /dev/iosb/[r]stapeppu[c][h][n][o][v][g]

     b    Gibt die Nummer des rechnereigenen Busses für das Subsystem an
          (immer 0).

     r    Gibt das zeichenorientierte Gerät (raw) an.

     pp   Gibt abhängig vom Subsystem die Controller-Nummer(n) an. Weitere
          Informationen hierzu finden Sie unter stape(7).

     u    Die Nummer des SCSI-Plattenlaufwerks. Dabei handelt es sich um
          eine Nummer im Bereich 0 bis 15. Die Werte 10 bis 15 werden in
          hexadezimaler Form als a bis f dargestellt. Es ist darauf zu ach-
          ten, daß die Geräteadresse nicht mit der SCSI-ID des Host-Adap-
          ters kollidiert.

     h    Gibt das Gerät hoher Schreibdichte an.

     n    Gibt an, daß das Band beim Schließen des Geräts nicht zurückge-
          spult wird.

     c    Gibt das Gerät mit Datenkomprimierung an.

     o    Gibt das OSX-Gerät an, daß beim Schließen nicht zurückgespult
          werden soll.

     v    Gibt bei Geräten, bei denen der variable und feste Blockmodus
          möglich ist, den variablen Blockmodus an.

     g    Bei diesen Geräten kann über eine ioctl-Schnittstelle direkt mit
          den entsprechenden SCSI-Befehlen auf das Laufwerk geschrieben
          bzw. von dem Laufwerk gelesen werden.

     Bei Bedarf können die Dateien /dev/rmt0, /dev/rmt4, /dev/rmt8 und
     /dev/rmt12 als Bindeglied zu dem Gerät in /dev/ios0 angelegt werden.
     Die rmt-Dateien werden wie folgt eingebunden:









Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

          rmt0      Gibt das Standardgerät niedriger Schreibdichte an.

          rmt4      Gibt an, daß das Band beim Schließen des Geräts nicht
                    zurückgespult wird.

          rmt8      Gibt das Gerät hoher Schreibdichte an.

          rmt12     Gibt das Gerät hoher Schreibdichte an, das beim Schlie-
                    ßen nicht zurückgespult werden soll.

     Bei Neun-Spur-Bandlaufwerken entspricht eine niedrige Schreibdichte je
     nach Gerätetyp entweder 800 oder 1600 bpi (bits per inch) und eine
     hohe Schreibdichte entweder 1600 oder 6250 bpi. Bei QIC-Bandlaufwerken
     (Quarter-Inch Compatible) hängen die Werte bei niedriger und hoher
     Schreibdichte vom benutzten Band und vom Gerätetyp ab. Für Bandlauf-
     werke vom Typ DDS (Digital Data Storage)/DAT (Digital Audio Tape) sind
     eine niedrige und hohe Schreibdichte gleich (es ist nicht falsch, ein
     Gerät mit hoher Schreibdichte anzugeben, aber das Laufwerk reagiert
     nicht anders).

     Das Verhalten des Bandlaufwerks beim Schließen des Geräts hängt davon
     ab, mit welchen Zugriffsberechtigungen das Gerät geöffnet und für wel-
     chen Zweck es benutzt wurde.

     So schreibt das Standardbandlaufwerk (z. B. /dev/ios0/rstape004) beim
     Schließen des Geräts zwei Bandmarken (eine Bandmarke bei einem QIC-
     Bandgerät) auf das Band und spult das Band an den Anfang zurück (BOT -
     Beginning-of-Tape), wenn es zum Schreiben geöffnet worden ist. Wenn es
     dagegen zum Lesen geöffnet worden ist, wird es beim Schließen des Geräts
     lediglich zum Bandanfang zurückgespult. Die Daten werden mit der Stan-
     dardschreibdichte des jeweiligen Laufwerks auf das Band geschrieben.

     Ein Band hoher Schreibdichte (z. B. /dev/ios0/rstape004h) verhält sich
     wie das oben beschriebene Standardband, nur werden die Daten mit hoher
     Schreibdichte (der Wert ist gerätespezifisch) auf das Band geschrie-
     ben.

     Ein Band ohne Rückspulfunktion (z. B. /dev/ios0/rstape004hn oder
     /dev/ios0/rstape004n) weist wesentliche Unterschiede zum Standardband
     auf. Wenn das Gerät zum Schreiben geöffnet worden ist, werden beim
     Schließen zwei Bandmarken auf das Band geschrieben (eine Bandmarke,
     wenn es sich um ein QIC-Laufwerk handelt); zusätzlich wird das Band
     hinter der ersten Bandmarke positioniert. Wenn das Gerät zum Lesen
     geöffnet worden ist, wird das Band hinter der Bandmarke positioniert.
     Wenn Sie daher gerade ein Band lesen, das Gerät schließen und das Band
     sich aktuell nicht hinter einer Bandmarke befindet, führt der Treiber
     das Kommando fsf (Forward Space File) durch, um das Band hinter der
     nächsten Bandmarke zu positionieren. Wenn Sie das Gerät zum Lesen
     geöffnet haben, das Gerät schließen und das Band aktuell exakt hinter
     einer Bandmarke positioniert ist, bleibt seine Position unverändert.
     Die Schreibdichte, mit der die Daten auf das Band geschrieben werden,
     hängt davon ab, ob das Gerät mit der Option h geöffnet worden ist.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

     Ein OSX-Band ohne Rückspulfunktion (z. B. /dev/ios0/rstape004o) ver-
     hält sich wie ein Standardband ohne Rückspulfunktion mit dem Unter-
     schied, daß das OSX-Band nach Lesezugriffen nicht positioniert wird.

     Derzeit wird nur die zeichenorientierte Schnittstelle (raw) vom IOS-
     Band-Subsystem unterstützt. Der Zugriff auf ein blockorientiertes
     IOS-Bandgerät führt zur Übergabe des Fehlers EINVAL.

     Wird ein Band als blockorientiertes Gerät gelesen, muß das Band mit
     2048 Byte großen Sätzen beschrieben worden sein. Dies kann mit einem
     zeichenorientierten Gerät geschehen. Anschließend kann das blockorien-
     tierte Gerät gelesen werden, vorausgesetzt, es wird unterstützt. Das
     Band wird in Sätzen von jeweils 2048 Byte gelesen. Mit dieser Methode
     ist es möglich, wenn auch ineffizient, ein blockorientiertes Bandgerät
     wie eine beliebige andere Datei zu behandeln. Plattenzugriffe haben
     ihre übliche Bedeutung und es ist möglich, jeweils 1 Byte zur Zeit zu
     lesen. Das Schreiben in sehr kleinen Einheiten ist jedoch nicht emp-
     fehlenswert, da dadurch in Bändern mit variabler Blockgröße sehr große
     Lücken zwischen den Sätzen entstehen können. Dies kann sich negativ
     auf den Durchsatz auswirken.

     Bei jedem Aufruf von read oder write wird der nächste Datensatz auf
     dem Band entweder gelesen oder geändert. Bei einem write-Aufruf ent-
     spricht die Länge des Datensatzes der Länge des vorhandenen Puffers.
     Bei einem read-Aufruf wird die Datensatzlänge als Anzahl der eingele-
     senen Bytes zurückgegeben, vorausgesetzt, sie übersteigt nicht die
     Puffergröße; andernfalls wird ein Fehler ausgegeben. E/A-Suchoperatio-
     nen auf ein Raw-Band werden ignoriert. Beim Lesen einer Bandab-
     schnittsmarke wird der Zählerwert Null Byte zurückgegeben. Danach wer-
     den weiterhin Lesezugriffe ausgeführt, bis eine weitere Bandmarke
     gefunden oder ein weiterer Fehler (z. B. Bandende) festgestellt wird.

     Für Raw-Magnetbänder gibt es eine Reihe von ioctl-Operationen. Die
     folgenden Informationen sind in /usr/include/sys/mtio.h enthalten:

     /*
      * Strukturen und Definitionen für E/A-Steuerkommandos auf Magnetbänder
      */

     /* Struktur für MTIOCTOP - Kommando für Magnetband-Operationen */
     struct mtop
     {
         short   mtop;     /* Nachfolgend definierte Operationen   */
         daddrt mtcount;  /* Anzahl                               */
     };









Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

     /* Operationen */
     #define MTWEOF    0   /* Dateiende-Datensatz schreiben              */
     #define MTFSF     1   /* Zum Anfang der nächsten Datei vorspulen    */
     #define MTBSF     2   /* Zum Anfang der vorhergehenden Datei
                              zurückspulen                               */
     #define MTFSR     3   /* Zum Anfang des nächsten Datensatzes
                              vorspulen                                  */
     #define MTBSR     4   /* Zum Anfang des vorhergehenden Datensatzes
                              zurückspulen                               */
     #define MTREW     5   /* Zurückspulen                               */
     #define MTOFFL    6   /* Zurückspulen und Laufwerk offline schalten */
     #define MTNOP     7   /* Keine Operation, nur Einstellen des Status */
     #define MTRET     8   /* Nachspannen                                */
     #define MTRST     9   /* Rücksetzen                                 */
     #define MTBLKSIZE 10  /* Blockgröße abfragen                        */
     #define MTONL     11  /* Laufwerk online schalten                   */
     #define MTAPP     12  /* Zum Datenende vorspulen                    */
     #define MTERA     13  /* Band auf fester Länge löschen              */
     #define MTRETEN   14  /* Nachspannen (nur Bandkassette)             */
     #define MTWSM     15  /* Wird derzeit nicht benutzt                 */
     #define MTFSSM    16  /* Wird derzeit nicht benutzt                 */
     #define MTBSSM    17  /* Wird derzeit nicht benutzt                 */
     #define MTRELOF   18  /* Permanentes Reservieren                    */

     /* Struktur für MTIOCGET - Kommando zum Abfragen des Bandstatus    */
     struct mtget
     {
         short   mttype;    /* Art des Magnetbandgeräts               */
         /* Die beiden folgenden Register sind geräteabhängig          */
         short   mtdsreg;   /* Register "Gerätestatus"                */
         short   mterreg;   /* Register "Fehler"                      */
         /* Ende der geräteabhängigen Register                         */
         daddrt mtresid;   /* Restzähler                             */
         /* Die beiden folgenden Aufrufe sind noch nicht implementiert */
         daddrt mtfileno;  /* Dateinummer der aktuellen Position     */
         daddrt mtblkno;   /* Blocknummer der aktuellen Position     */
         /* Ende der noch nicht implementierten Aufrufe                */
     };

     /*
      * Konstanten für das Byte mttype
      */

     #define MTTIOC 0x08  /* IOC/Tapemaster-Bandlaufwerk */
     #define MTTTPE 0x09  /* TPE/Pertec-Bandlaufwerk     */
     #define MTTIOS 0x0a  /* IOS-Bandlaufwerk            */








Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

     /* Steuerkommandos für Magnetband-E/A */
     #define MTIOC           ('t'<<8)
     #define MTIOCTOP        (MTIOC|1)  /* Magnetband-Operation ausführen */
     #define MTIOCGET        (MTIOC|2)  /* Magnetband-Status abfragen     */
     #define MTIOCPOSTEOTOK  (MTIOC|3)  /* Schreiben hinter Bandende (EOT)
                                           möglich                        */
     #define MTIOCEOTCOMPAT  (MTIOC|4)  /* EOT-Kompatibilität EIN         */
     #define MTIOCGETIOSTAT  (MTIOC|5)  /* E/A-Zeitpunkt abfragen         */
     #define MTIOSGETERROR   (MTIOC|6)  /* Fehlerstatus abfragen          */

     Wird der Knoten eines Bandgerätes geöffnet, so reserviert der Band-
     Treiber dieses Gerät für die Dauer des Auftrages und gibt es nach dem
     Schließen wieder frei. Hochleistungsbandlaufwerke verfügen manchmal
     über zwei unabhängige SCSI-Busse und können somit zur gleichen Zeit an
     zwei Systeme gleichzeitig angeschlossen werden. Aus diesem Grund wurde
     das ioctl-Kommando MTRELOF eingeführt, damit sich eines der ange-
     schlossenen Systeme das Bandlaufwerk über mehrere Aufträge hinweg per-
     manent reservieren kann. Das ioctl-Kommando MTRELOF besitzt eine
     eigene Struktur zur Kommunikation mit dem Betriebssystem. Außer dem
     permanenten Reservieren und dem Freigeben kann auch der Reservierungs-
     status eines Bandgerätes abgefragt werden.

     /* Struktur für MTRELOF-Kommando zum permanenten
        Reservieren von Bandgeräten */
     struct  resrel  {
           short   rescmd;         /* Kommando zum Reservieren, Abfragen */
                                     /* oder zum Feststellen des Status */
           short   stat;           /* Rückgabe des Reservierungsstatus */
     };

     /* Definitionen der Kommandos und zurückgegebenen Status */
     #define RESRELEASE         0
     /* Kommando zum Freigeben einer Reservierung */
     #define RESRESERVE         1
     /* Kommando zum permanenten Reservieren */
     #define RESSTATUS          2
     /* Kommando zur Abfrage des Reservierungsstatus */
     #define RESRESERVELOCAL   3
     /* Status in resrel.stat, wenn das Gerät vom */
        lokalen System aus reserviert wurde */
     #define RESRESERVEREMOTE  4
     /* Status in resrel.stat, wenn das Gerät vom */
        remote-System aus reserviert wurde */
     #define RESUNDEF           5
     /* Status in resrel.stat, wenn der Reservierungsstatus */
        nicht ermittelt werden konnte */

     Konnte einer Reservierung oder die Freigabe des Laufwerkes nicht
     durchgeführt werden, wird die Variable errno auf die Werte EIO oder
     EACCES gesetzt. Lautet der Wert EACCES (kein Zugriffsrecht), so wurde
     das Gerät von einem anderem System aus reserviert.



Seite 5                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

     Neben den hier dargestellten ioctl(2)-Operationen stehen im Band-
     Treiber alle Operationen des generischen sgen-Treibers zur Verfügung.
     Dies ist für alle Bandgeräte mit angeschlossenem Medienwechsler ver-
     wendbar, wenn der Medienwechsler und das Bandlaufwerk eine gemeinsame
     SCSI-ID besitzen und somit über einen Knoten angesprochen werden. Mit
     Hilfe dieser Schnittstelle können Datenträger z. B in das eigentliche
     Laufwerk geladen und in den entsprechenden Slot entladen werden. Soll
     mittels SCSI-Befehlen direkt auf das Band geschrieben oder vom Band
     gelesen werden, so ist der Knoten mit der Endung "g" (z. B.
     /dev/ios0/rstape0XXg) zu verwenden. Knoten mit dieser Endung existie-
     ren aber nur für hoch performante Laufwerke. Alle notwendigen Informa-
     tionen zu dieser ioctl-Schnittstelle können der Manualseite sgenio(7)
     entnommen werden.

DIAGNOSE
     Im folgenden sind sämtliche Fehlerbedingungen aufgeführt, die während
     des Bandbetriebs auftreten können. Jede Fehlerbedingung wird durch
     eine kurze Beschreibung ergänzt, in der die Ursache des Fehlers sowie
     der Zustand des Bands nach dem Auftreten des Fehlers erläutert wird.

     Beginning-of-Tape (BOT) encountered
          Während der letzten Bandoperation wurde die physische BOT-Markie-
          rung (Folie) vom Laufwerk festgestellt. Die gerade laufende Ope-
          ration wird als fehlgeschlagen betrachtet, und der Fehler EIO
          wird zurückgegeben. Wenn das Laufwerk als blockorientiertes Gerät
          genutzt wurde, wird beim Feststellen der BOT-Bedingung intern ein
          Status aktiviert, in dem bis zum Schließen und erneuten Öffnen
          des Laufwerks keine weiteren Operationen mehr auf das Band ausge-
          führt werden können. Da es nach einer BOT-Bedingung nicht sicher
          ist, welche Stelle des Bands sich am Schreib-/Lesekopf befindet,
          wird durch das Setzen dieses Status eine unkorrekte Bandpositio-
          nierung verhindert.

     Attempt to read blank tape or density mismatch
          Nach dem Start der aktuellen Operation konnte das Laufwerk inner-
          halb einer bestimmten Bandlänge keine formatierten Daten auf dem
          Band feststellen. (HINWEIS: Diese Bandlänge ist auf jedem Lauf-
          werk unterschiedlich festgelegt). Bei dieser Fehlerbedingung wird
          der Fehler EIO an den Benutzer zurückgegeben; alle gefundenen
          Daten sollten gelöscht werden. Wenn das Laufwerk als blockorien-
          tiertes Gerät genutzt wird, wird beim Feststellen eines leeren
          Bands intern ein Status aktiviert, in dem bis zum Schließen und
          erneuten Öffnen des Laufwerks keine weiteren Operationen mehr auf
          das Band ausgeführt werden können. Da es nach einer BOT-Bedingung
          nicht sicher ist, welche Stelle des Bands sich am Schreib-/Lese-
          kopf befindet, wird durch das Setzen dieses Status eine unkor-
          rekte Bandpositionierung verhindert. Diese Fehlerbedingung kann
          auch dadurch verursacht werden, daß die Schreibdichte nach dem
          Einlegen eines Bands manuell geändert wurde und die Formatinfor-
          mationen vor dem ersten Block des Bands (Identitäts-Burst) gele-
          sen werden. Einige Bänder scheinen danach für das Laufwerk leer
          zu sein, so daß der Fehler für ein leeres Band gemeldet wird.


Seite 6                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

     Correctable error
          Während der letzten Bandoperation stellte das Laufwerk einen
          behebbaren Fehler fest. Handelte es sich dabei um einen Lesezu-
          griff, bleiben die Daten unverändert erhalten; der Benutzer
          erhält dann keine Fehlermeldung, obwohl für das System ein Fehler
          protokolliert worden ist. Handelte es sich um einen Schreibzu-
          griff und das Kommando wfm (Write File Mark), so wird dem Benut-
          zer erst nach einigen erneuten Versuchen der Fehler EIO gemeldet.
          Das Band wird zum jeweils letzten Datensatz zurückgespult, das
          Band wird auf einer festen Länge gelöscht, und die E/A-Operation
          wird erneut versucht. Wenn auch der neue Versuch fehlschlägt,
          wird der Treiber in einem Status gelassen, in dem bis zum Schlie-
          ßen und erneuten Öffnen des Geräts keine weiteren Operationen auf
          das Laufwerk mehr möglich sind.

     Drive is already in use
          Das Laufwerk ist bereits durch einen anderen Prozeß geöffnet wor-
          den. An den Benutzer wird der Fehler EBUSY zurückgegeben.

     Drive not ready (offline)
          Das Laufwerk ist während bzw. unmittelbar vor der letzten Bando-
          peration physisch offline geschaltet worden; an den Benutzer wird
          der Fehler ENXIO zurückgegeben. Zur Beseitigung der Fehlerbedin-
          gung wird das Laufwerk vor dem Starten der nächsten Operation
          wieder offline geschaltet. Wenn das Laufwerk als blockorientier-
          tes Gerät genutzt wird, wird das Gerät beim Offline-Schalten mit
          einem schweren Fehler markiert; bis zum Schließen und erneuten
          Öffnen des Laufwerks sind dann keine weiteren Operationen mehr
          möglich. Da es nach dem Offline-Schalten des Laufwerks nicht
          sicher ist, welche Stelle des Bands sich am Schreib-/Lesekopf
          befindet, wird durch das Setzen dieses Status eine unkorrekte
          Bandpositionierung verhindert.

     Drive write protected
          Es wurde versucht, das Laufwerk zum Schreiben zu öffnen, obwohl
          das Band schreibgeschützt war (es war kein Schreibschutzring ein-
          gelegt bzw. unkorrekte Einstellung der Schreibschutzlasche). An
          den Benutzer wird der Fehler ENXIO zurückgegeben; das Gerät wird
          nicht geöffnet. Das Band muß dann erneut mit dem Schreibschutz-
          ring (bzw. mit korrekt eingestellter Schreibschutzlasche) einge-
          legt werden - es sei denn, Sie möchten das Gerät nur zum Lesen
          öffnen.

     End-of-File (EOF/FM) encountered:
          Während der letzten Operation wurde vom Laufwerk eine Bandmarke
          festgestellt. Dies wird auf Benutzerebene in den Rückgabewert
          Null Byte umgesetzt. Der Schreib-/Lesekopf befindet sich mit
          Sicherheit am Anfang des nächsten Datensatzes. Wenn das Laufwerk
          als blockorientiertes Gerät genutzt wird, wird beim Feststellen
          einer Bandmarke intern ein Status eingestellt, in dem so lange
          keine weiteren Lese- oder Suchoperationen in Vorwärtsrichtung
          mehr möglich sind, bis das Band wieder zurückgespult wird (lseek


Seite 7                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

          in Rückwärtsrichtung) und die Bandmarke durch zusätzliche Daten
          überschrieben wird.

     End-of-Tape (EOT) encountered
          Die Band-E/A-Operationen am Bandende (EOT) sind folgendermaßen
          festgelegt:

          SCHREIBOPERATIONEN:

          Die Schreiboperationen werden so lange fortgesetzt, bis die EOT-
          Markierung (Ende der Bandspule) festgestellt wird. Der Software-
          treiber protokolliert diese Bedingung; da er jedoch davon aus-
          geht, daß die Schreiboperation vollständig durchgeführt wurde,
          (Anzahl der zurückgegebenen Bytes entspricht Anzahl der angefor-
          derten Bytes), wird dem Benutzer kein Fehler gemeldet. Bei jeder
          nachfolgenden Schreiboperation wird dem Benutzer ein Fehler
          (ENOSPC) gemeldet, wobei das Band nicht bewegt wird.

          LESEOPERATIONEN:

          Die Leseoperationen werden so lange fortgesetzt, bis die EOT-
          Markierung festgestellt wird. Dem Benutzer wird kein Fehler
          gemeldet. Das Einlesen kann so lange fortgesetzt werden, bis die
          Eingabe vollständig verarbeitet worden ist, eine Bandmarke
          (zurückgegebener Zählerwert Null Byte) festgestellt wird oder der
          Treiber eine Fehlermeldung über ein leeres Band zurückgibt.

          In früheren Betriebssystemversionen wurde die EOT-Bedingung
          anders verarbeitet als hier beschrieben; sie wurde von einigen
          Kommandos wie z. B. cpio als Ende der Bandspule interpretiert.
          Datenarchive über mehrere Magnetspulen, die mit derartigen Kom-
          mandos angelegt wurden, müssen beim Rückspeichern mit den neuen
          Subsystemen in manchen Fällen gesondert behandelt werden. Zu die-
          sem Zweck gibt es die neue ioctl-Funktion MTIOCEOTCOMPAT.
          MTIOCEOTCOMPAT zwingt den Softwaretreiber, bei dieser Bedingung
          einen Fehler zu melden. Zusätzlich muß der Softwaretreiber mit
          einem bestimmten Argument angewiesen werden, die Meldung von EOT
          um eine bestimmte Anzahl von Leseoperationen zu verzögern. Hier
          wird in der Regel der Wert 1 angegeben; allerdings kann für Bän-
          der, die in Kennedy-Bandlaufwerken mit 6250 bpi beschrieben wer-
          den, der Wert 2 erforderlich sein. Der Grund hierfür liegt in den
          verschiedenen Möglichkeiten, wegen dener die Laufwerke die Bedin-
          gung EOT feststellen und melden sowie im Einfluß der Blockgröße
          und der Schreibdichte auf diese Informationen. Die ioctl-Funktion
          MTIOCEOTCOMPAT kann zu einem beliebigen Zeitpunkt nach dem Öffnen
          eines Geräts und vor dem Feststellen von EOT aufgerufen werden.

     FIFO over/underflow
          Während der letzten Bandoperation kam es in der FIFO des Lauf-
          werks zu einem Unterlauf (es war gerade ein write-Aufruf aktiv)
          oder einem Überlauf (es war gerade ein read-Aufruf aktiv). Der
          Fehler EIO wird dem Benutzer erst nach einigen erneuten Versuchen


Seite 8                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

          gemeldet. Sowohl bei einem Unter- als auch einem Überlauf wird
          das Band um einem Datensatz zurückgespult und die E/A-Operation
          erneut versucht. Wenn die erneuten Versuche fehlschlagen, bleibt
          der Treiber in einem Status, in dem bis zum Schließen und erneu-
          ten Öffnen des Geräts keine weiteren Operationen mehr möglich
          sind.

     Hard error
          Während der letzten Band-Operation wurde ein Defekt auf dem Band
          festgestellt. EIO wird dem Benutzer erst nach einigen erneuten
          Versuchen gemeldet. Handelte es sich um einen Lesezugriff, wird
          das Band zum vorhergehenden Datensatz zurückgespult, und die
          E/A-Operation wird erneut versucht. Handelte es sich um eine
          Schreiboperation, wird das Band auf einer festen Länge gelöscht,
          und die E/A-Operation wird erneut versucht. Wenn die erneuten
          Versuche fehlschlagen, bleibt der Treiber in einem Status, in dem
          bis zum Schließen und erneuten Öffnen des Geräts keine weiteren
          Operationen mehr möglich sind.

     Reservation conflict
          Es wurde auf ein Bandlaufwerk zugeriffen, das bereits von einem
          anderen System reserviert wurde. Moderne Hochleistungsbandlauf-
          werke bieten zum Teil die Möglichkeit, an zwei Systeme gleichzei-
          tig angeschlossen zu werden, da sie über zwei unabhängige SCSI-
          Busse verfügen. Hat eines der Systeme das Bandlaufwerk permanent
          reserviert und versucht das zweite System auf das Bandlaufwerk
          zuzugreifen, wird ein Reservation conflict gemeldet.

     Parity error
          Während der letzten Bandoperation kam es bei der Datenübertragung
          auf das Band zu einem Paritätsfehler. EIO wird dem Benutzer erst
          nach einigen erneuten Versuchen gemeldet. Das Band wird zum vor-
          hergehenden Datensatz zurückgespult, und die E/A-Operation wird
          erneut versucht. Wenn die erneuten Versuche fehlschlagen, bleibt
          der Treiber in einem Status, in dem bis zum Schließen und erneu-
          ten Öffnen des Geräts keine weiteren Operationen mehr möglich
          sind.

     Timeout on formatter - busy true
          Während einer früheren Operation wurde vom Bandformatierer des
          Laufwerks ein Fehler festgestellt; die Schnittstelle blieb in
          einem undefinierten Status. Die nachfolgende Operation konnte
          nicht ausgeführt werden, da eines der Schnittstellensignale (for-
          matter - busy) nicht innerhalb eines bestimmten Zeitlimits
          zurückgesetzt wurde. Die Ursache für diesen Fehler ist in den
          meisten Fällen der Versuch, Blöcke zu schreiben, die von der
          Speicherverwaltungs-Firmware eines Bandlaufwerks mit Cache-
          Speicher wegen ihrer Größe nicht verarbeitet werden können.






Seite 9                      Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

HINWEISE
     Post-EOT I/O:
          Post-EOT I/O (E/A hinter EOT-Markierung) ist eine Einrichtung,
          mit der Daten auf Bänder im Nicht Reliant UNIX Format geschrieben
          werden können, die nach einem EOT Postambel-Informationen auf ein
          Band schreiben möchten (z. B. EOV). Bänder, die auf diese Weise
          formatiert wurden, können jetzt zurückgelesen werden. Diese Ein-
          richtung arbeitet folgendermaßen:

          SCHREIBOPERATIONEN:

          Nach der EOT-Markierung ist unter zwei Bedingungen eine weitere
          E/A-Operation zulässig: Zum einen, wenn das betreffende Bandgerät
          als Gerät ohne Rückspulfunktion geöffnet worden ist (dafür muß
          Bit 2 der Gerätenummer gesetzt sein). Beim Schließen des Bands
          bei einem EOT wird ein Status aktiviert, in dem E/A-Operationen
          beim nachfolgenden Öffnen des Geräts auch hinter der EOT-Markie-
          rung möglich sind. Beachten Sie, daß eine Bandmarke zwischen den
          Bandabschnitten vor und hinter der EOT-Markierung auf dem Band
          verbleibt. Bei der zweiten Bedingung muß kein spezielles Gerät
          geöffnet, sondern beim Feststellen der EOT-Bedingung die ioctl-
          Funktion MTIOCPOSTEOTOK aufgerufen werden. Dadurch können weitere
          E/A-Operationen ausgeführt werden, ohne daß das Gerät geschlossen
          werden muß; außerdem bleibt keine zwischengeschaltete Bandmarke
          auf dem Band. In beiden Fällen sind maximal acht weitere E/A-
          Operationen zulässig. Danach wird der Fehler EIO ausgegeben. Die-
          ser Status bleibt für alle weiteren Schreibzugriffe und auch nach
          allen weiteren open-Aufrufen aktiv, bis eine der folgenden zwei
          Operationen durchgeführt wird: das Gerät wird geschlossen
          und/oder zurückgespult, oder der Schreib-Lese-Kopf wird mit dem
          ioctl-Funktionsaufruf BSR/BSF vor der EOT-Markierung positio-
          niert.

          LESEOPERATIONEN:

          Es werden weiterhin Leseoperationen durchgeführt, bis die EOT-
          Bedingung festgestellt wird. Dem Benutzer wird kein Fehler gemel-
          det. Die Leseoperationen können so lange durchgeführt werden, bis
          die gesamte Eingabe verarbeitet ist, eine Bandmarke (zurückgege-
          bener Zählerwert Null Byte) festgestellt wird oder der Treiber
          eine Fehlermeldung über ein leeres Band zurückgibt. HINWEIS: Wenn
          ein Band in einem derartigen System erstellt wurde und die erste
          Bedingung (Schließen und Neuöffnen des Geräts ohne Rückspulfunk-
          tion bei EOT; siehe Absatz oben) zutrifft, wird die zwischenge-
          schaltete Bandmarke festgestellt. Dies sollte in allen Programmen
          vorgesehen werden, die für das Lesen derartiger Bänder konzipiert
          sind.







Seite 10                     Reliant UNIX 5.44               Gedruckt 11/98

mtio(7)                                                             mtio(7)

DIAGNOSE
     Der Status sollte in einem geräteunabhängigen Format zurückgegeben
     werden.

     Die SCSI-Status-Bytes werden für IOS-Bänder nicht zurückgegeben.

DATEIEN
     /dev/iosb/[r]stapeppu[c][h][n][o][v][g]

     /dev/rmt*

SIEHE AUCH
     cpio(1), mt(1), tar(1), sgenio(7), stape(7), autoconf(8), tpsetup(8).









































Seite 11                     Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026