Provided by: manpages-de_0.8-1_all bug

BEZEICHNUNG

       st - SCSI tape device (Bandlaufwerke, Streamer)

       Diese  Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
       die englischsprachige Handbuchseite zu Rate, indem Sie

              man -LC 4 st

       eingeben.

"UBERSICHT

       #include <sys/mtio.h>

       int ioctl(int fd, int request [, (void *)arg3])
       int ioctl(int fd, MTIOCTOP, (struct mtop *)mt_cmd)
       int ioctl(int fd, MTIOCGET, (struct mtget *)mt_status)
       int ioctl(int fd, MTIOCPOS, (struct mtpos *)mt_pos)

BESCHREIBUNG

       Der st-Treiber stellt eine einheitliche Schnittstelle fur die Benutzung
       der   diversen   SCSI-Bandlaufwerke   zur   Verfugung.    Im  aktuellen
       Entwicklungsstand  ubernimmt  der  Treiber  die  Kontrolle  uber   alle
       erkannten  Laufwerke,  auf die nur sequentiell zugegriffen werden kann.
       Der st-Treiber benutzt die  dabei  die  grundsatzliche  (major  device)
       Geratenummer 9.

       Zusatzlich   werden   generell   zwei   nebensachliche  (minor  device)
       Geratenummern  benutzt.   Eine  grundsatzliche  Geratenummer,  n,   die
       sequentiell  beim Erkennen der Laufwerke vergeben wird, und eine Nummer
       fur ein nicht-zuruckspulendes Gerat, (n+ 128).  Wenn  eine  Bandeinheit
       uber  die  grundsatzliche  Geratenummer, n, geoffnet wird, so wird nach
       dem SchlieBen ein REWIND-Kommando an die Bandeinheit geschickt; Bei der
       Benutzung   der   Bandeinheit  uber  die  Geratedatei  fur  das  nicht-
       zuruckspulende Gerat, (n+ 128).  halt nicht ;-)

       Optionen wie die  Schreibdichte  oder  BlockgroBe  sind  nicht  in  den
       Geratenummern   implementiert.    Diese   Optionen   mussen  durch  die
       Verwendung von ioctl()-Aufrufen gesetzt werden  Sie  werden  erst  nach
       SchlieBen  und  einem  darauffolgenden  erneuten Offnen der Geratedatei
       aktiv.

       Geratedateien werden ublicherweise mit dem Programm mknod eingetragen

              mknod -m 660 /dev/st0 c 9 0
              mknod -m 660 /dev/st1 c 9 1
              mknod -m 660 /dev/nst0 c 9 128
              mknod -m 660 /dev/nst1 c 9 129

       Es gibt hier keine  vergleichbare  block-orientiert  Geratedatei.   Die
       zeichenorientierte     Geratedatei     bietet     standardmaBig     das
       Zwischenspeichern  von  Zeichen   (buffering)   und   das   Merkmal   "
       weiterlesen"  (read-ahead)  an.  Ferner unterstutzt es wahlfreies Lesen
       und Schreiben, welches nur durch den internen  Treiber-Puffer  begrenzt
       ist.  (Standard: 32768 bytes)

       Die   PuffergroBe  kann  sowohl  als  Kernelparameter,  sowie  auch  im
       Quelltext "fest" vergeben werden.

       Ublicherweise wird ein Soft-Link /dev/tape eingerichtet, der auf das im
       System vorhandene und zu benutzende Gerat zeigt.

IOCTLS

       Der Treiber unterstutzt drei ioctl()-Aufrufe.
        Alle  dem  st-Treiber  unbekannten  Aufrufe werden an den SCSI-Treiber
       ubergeben.  Die folgenden Definitionen stammen aus <linux/mtio.h>:

   MTIOCTOP - Ausf"uhren einer Band Anweisung
       Diese Operation benotigt ein Argument vom Typ

       (struct mtop *).

       Nicht alle Laufwerke unterstutzen jede der moglichen Anweisungen.   Der
       Treiber  gibt  ein  EIO  zuruck,  wenn das Laufwerk die Anweisung nicht
       unterstutzt.

       Anm. des Ubersetzers

       Das Folgende ist nur sehr schwer 100%ig ins Deutsche zu ubersetzen,  da
       so  mancher  Begriff  aus  dem  Englischen  gelaufiger  ist,  als seine
       deutsche Ubersetzung.  Da ich nicht in  der  "IBM  Ubersetzerabteilung"
       arbeite,  habe  ich hier und dort das englische Original stehen lassen.
       (Hauptsachlich bei sehr kurzen Beschreibungen)

       Bei "Unverstandlichkeit" des Folgenden bitte ich auf die  ursprungliche
       (englischsprachige)  man-page  zu  st(4) zuruckzugreifen.  Speziell fur
       diesen Abschnitt wurde  der  Ubersetzer  sich  uber  Ruckmeldungen  der
       "praktischen Anwender" freuen. ;-)

       Fur eine gesunde Kritik einfach eine Mail an c.schmidt@ius.gun.de

       /* Struktur fur MTIOCTOP - Anweisungen an das Bandlaufwerk  */

       struct mtop {
           short  mt_op;    /* Welche Anweisung (Auflistung folgt) */
           int    mt_count; /* Wie oft diese Anweisung ausfuhren */
       };

       Bandlaufwerk; mogliche Anweisungen:
       MTBSF         Zuruckspulen uber mt_count Filemarks.
       MTBSFM        Zuruckspulen  uber mt_count Filemarks.  Positionieren des
                     Mediums(Schreibkopf?)  auf  die  EOT  Seite  des  letzten
                     Filemarks.
       MTBSR         Zuruckspulen uber mt_count records (tape blocks) BLOCKS.
       MTBSS         Zuruckspulen uber mt_count setmarks.
       MTEOM         "Geh  an  das  Ende  der  aufgezeichenten  Daten ..." Zum
                     Anhangen von Dateien/Archiven.
       MTERASE       Band loschen.
       MTFSF         Vorspulen uber mt_count Filemarks.
       MTFSFM        Vorspulen uber  mt_count  Filemarks.   Positionieren  des
                     Mediums(Schreibkopfes?)  auf  die  BOT  Seite des letzten
                     Filemarks.
       MTFSR         Vorspulen uber mt_count records (tape blocks) BLOCKS.
       MTFSS         Vorspulen uber mt_count Setmarks.
       MTNOP         Nichts machen - Als Seiteneffekt wird  der  Treiberpuffer
                     geloscht.  Kann moglicherweise in Verbindung mit MTIOCGET
                     benutzt werden.
       MTOFFL        Zuruckspulen und Bandlaufwerk stoppen.
       MTRESET       Reset drive.
       MTRETEN       Retension tape.  (Medium nicht auswerfen?)
       MTREW         Zuruckspulen.
       MTSEEK        Suche nach dem BLOCK  mit  der  Nummer  mt_count.   Diese
                     Anweisung  erfordert ein SCSI-2 Bandlaufwerk, welches das
                     LOCATE   Kommando    unterstutzt    (laufwerksspezifische
                     Adresse),  oder ein Tandberg-kompatibles SCSI-1 Laufwerk.
                     (Tandberg, Archive,  Viper,  Wangtek,  ...).   Die  BLOCK
                     NUMMER   ist   dabei   Laufwerk   spezifisch   und   kann
                     moglicherweise  uber  den   Ruckgabewert   von   MTIOCPOS
                     herausgefunden werden.
       MTSETBLK      Setzen  der  BLOCK  GroBe  auf  den Wert, der in mt_count
                     angegeben ist.  Ein BLOCK GroBe von 0 setzt das  Laufwerk
                     auf variable BLOCK GroBe.
       MTSETDENSITY  Setzen  der  Schreibdichte (tape density) auf den Wert in
                     mt_count.  Ubliche Werte fur die Schreibdichte sind:
                         0x00 Implicit       0x11 QIC-525
                         0x04 QIC-11         0x12 QIC-1350
                         0x05 QIC-24         0x13 DDS
                         0x0F QIC-120        0x14 Exabyte EXB-8200
                         0x10 QIC-150        0x15 Exabyte EXB-8500
       MTWEOF        Schreibe mt_count Filemarks.
       MTWSM         Schreibe mt_count Setmarks.
       MTSETDRVBUFFER
               Setzt verschiedene Laufwerks- und Treiber-spezifische Optionen,
               gemaB der in mt_count kodierten Bits.
               Setzen der Laufwerk- und Treiber-Optionen.
               Diese  bestehen  aus  dem Setzen des Laufwerk-"buffer"-Modus, 6
               Treiber-Optionen vom Typ Boolean  und  dem  "Schreibschwellwert
               des  Treiberpuffers."  (buffer  write  threshold);  d.h. ab dem
               Erreichen des Schreibschwellwertes wird das  Band  physikalisch
               beschrieben.   Diese  Parameter  konnen  nur vor vor dem ersten
               Schreiben auf Laufwerkes benutzt werden, und bleiben auch  beim
               SchlieBen  und  Offnen  des  Devices  bestehen.   Eine einzelne
               Anweisung kann dabei (a) nur den "buffer"  Modi,  und/oder  (b)
               die    Schalter    von    Typ   Boolean,   und/oder   (c)   den
               Schreibschwellwert des Treiberbuffers betreffen.

               Ein Wert von 0 in den "high-order 4 Bits" muss zum  Setzen  des
               Laufwerk  "buffer"  Modi  benutzt  werden.   Folgende Modi sind
               moglich:

                   0   Das Laufwerk gibt erst einen GOOD Status  zuruck,  wenn
                       die Datenblocke auf das Medium geschrieben wurden.
                   1   Mit  groBer  Wahrscheinlichkeit  wird das Laufwerk nach
                       einer WRITE Anweisung einen  GOOD  Status  zuruckgeben,
                       wenn   alle   Daten  in  den  internen  Laufwerksbuffer
                       ubertragen sind.
                   2   Mit groBer Wahrscheinlichkeit wird  das  Laufwerk  nach
                       einer  WRITE  Anweisung  einen GOOD Status zuruckgeben,
                       wenn (a) alle Daten  in  den  internen  Laufwerkspuffer
                       ubertragen  sind,  und  (b) alle in dem Laufwerkspuffer
                       zwischengespeicherten Daten auf das Medium  geschrieben
                       wurden.

               Der   Schwellwert   fur   das   Schreiben  wird  uber  mt_count
               kontrolliert.

       mt_count kann wie folgende Werte beinhalten:

       MT_ST_WRITE_THRESHOLD

       Logisch -ODER- Verknupft mit einem BLOCK Zahler in den unteren 28 Bits.
       (logically  ORed  with  a  block count in the low 28 bits.)  Der Block-
       Zahler wird mit  1024-Byte  groBen  Blocken  bewertet,  nicht  mit  der
       wirklichen  physikalischen  GroBe auf dem Medium.  Die SchwellwertgroBe
       darf, wie vorher  beschrieben,  die  interne  TreiberbuffergroBe  nicht
       uberschreiten.

              Setzen der Boolean'schen Operatoren:

       false=falscher Aussagewert, true=wahrer Aussagewert

       mt_count kann dabei folgende Werte annehmen.

       Die  KONSTANTE  MT_ST_BOOLEANS  logisch  ODER  verknupft  mit einer der
       folgenden Kombinationen.   Jede  nicht  benutzte  Option  wird  "false"
       gesetzt.

              MT_ST_BUFFER_WRITES  (Default: true)
                     Buffer  all  write  operations.   Wird  diese  Option auf
                     "false" gesetzt  und  das  Laufwerk  arbeitet  mit  einer
                     festen  BlockgroBe,  dann  mussen alle Schreiboperationen
                     mit einem vielfachen der BlockgroBe durchgefuhrt  werden.
                     Diese  Option muss "false" gesetzt werden um ein sicheres
                     Schreiben auf "Multi-Volumes" zu ermoglichen.
              MT_ST_ASYNC_WRITES  (Default: true)
                     Wird  diese  Option  auf  "true"   gesetzt,   wird   eine
                     Schreiboperation  direkt  beendet, ohne auf das "wirklich
                     physikalische" Schreiben auf das Medium zu  warten.   Ein
                     wirkliches SCSI "WRITE" Kommando wird erst nach erreichen
                     der SchreibschwellwertgroBe des Treiberbuffers abgesetzt.
                     Eine  mogliche  Fehlermeldung wird erst nach der nachsten
                     Anweisung  zuruckgegeben.   Diese  Option  muss   "false"
                     gesetzt  werden  um  ein  sicheres  Schreiben auf "Multi-
                     Volumes" zu ermoglichen.
              MT_ST_READ_AHEAD  (Default: true)
                     Diese Option wird benutzt um die Zwischenspeicherung  von
                     Daten  (buffering)  und  das  "Weiterlesen"  (read-ahead)
                     Merkmal des Treibers zu setzen.  Wird  diese  Option  auf
                     "false"  gesetzt  und  das  Laufwerk  arbeitet  mit einer
                     festen BLOCK GroBe, dann mussen  alle  Schreiboperationen
                     mit einem vielfachen der BLOCK GroBe durchgefuhrt werden.
              MT_ST_TWO_FM  (Default: false)
                     Diese   Option   beeinflusst  das  Treiberverhalten  beim
                     SchlieBen einer Datei.  Normalerweise wird ein  einzelnes
                     "Filemark"  geschrieben,  wenn  diese  Option  auf "true"
                     gesetzt wird  werden  zwei  "Filemarks"  geschrieben  und
                     danach   an   den   Anfang   des  Zweiten  zuruckgesetzt.
                     (backspace over the second one)

                     Achtung: Seit QIC Bandlaufwerke nicht mehr  in  der  Lage
                     sind  "FILEMARKS"  zu  uberschreiben,  sollte  die Option
                     "true" gesetzt  werden.   Diese  Art  von  Bandlaufwerken
                     versucht  das  "Ende  der  geschrieben Daten" durch einen
                     Test auf freie Stellen auf dem Medium zu finden,  anstatt
                     nach zwei aufeinanderfolgende "FILEMARKS" zu suchen.

              MT_ST_DEBUGGING  (Default: false)
                     Diese  Option  wird  benutzt um die "Debug Meldungen" des
                     Treibers einzuschalten.  (Unterstutzung  nur,  wenn  beim
                     Treiberubersetzen DEBUG gesetzt war.)
              MT_ST_FAST_EOM  (Default: false)
                     Diese  Option  fuhrt dazu, das die MTEOM Anweisung direkt
                     zum   Laufwerk   geschickt   wird;   Moglicherweise   ein
                     Geschwindigkeitsvorteil  der  aber  dazu fuhren kann, das
                     der Treiber die aktuelle Dateinummer  (die  normalerweise
                     durch  die  MTIOCGET  Abfrage herausgefunden werden kann)
                     "vergiBt".  Wenn MT_ST_FAST_EOM den Status  "false"  hat,
                     wird  der Treiber eine MTEOM Anfrage mit "forward spacing
                     over files" beantworten.
              BEISPIEL
                     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);

   MTIOCGET - Get status
       Diese Abfrage benotigt ein Argument von  Typ  (struct  mtget  *).   Der
       Treiber  gibt  eine  EIO  Fehlermeldung  zuruck,  wenn das Laufwerk die
       Operation nicht ausfuhrt.

       /* Aufbau von MTIOCGET - "Besorge dir den Bandlaufwerk Status"
       Anweisung
       struct mtget {
           long   mt_type;
           long   mt_resid;
           /* Die folgenden Register sind laufwerksabhangig */
           long   mt_dsreg;
           long   mt_gstat;
           long   mt_erreg;
           /* Die folgenden zwei Felder werden nicht immer benutzt */
           daddr_t          mt_fileno;
           daddr_t          mt_blkno;
       };

       mt_type 11
              Es gibt  viele  "Header"  Definitionen  fur  mt_type,  aber  der
              aktuelle  Treiber  unterstutzt generell nur die Typen MT_ISSCSI1
              (Generic SCSI-1 tape) und MT_ISSCSI2 (Generic SCSI-2 tape).
       mt_resid
              ist immer Null.  (Nicht implementiert fur SCSI Bandlaufwerke.)
       mt_dsreg
              Gibt die aktuellen Laufwerk-Einstellungen fur die BlockgroBe (in
              den unteren 24 Bits) und der Schreibdichte (in den hohen 8 Bits)
              aus.    Diese    Felder    sind    durch    MT_ST-BLKSIZE_SHIFT,
              MT_ST_BLKSIZE_MASK,  MT_ST_DENSITY_SHIFT, und MT_ST_DENSITY_MASK
              definiert.
       mt_gstat
              Gibt   generelle   (laufwerksunabhangige)   Status-Informationen
              zuruck.   Das  "Header  File"  definiert  die  Makros zum Testen
              dieser Status Bits.
              GMT_EOF(x): Das Bandposition ist direkt nach  einem  "FILEMARK".
                  (Immer "false" nach einer MTSEEK Anweisung.
              GMT_BOT(x):  Die  Bandposition  ist  :  Anfang  des ersten Datei
                  (Immer "false" nach einer MTSEEK Anweisung.
              GMT_EOT(x): Eine Bandanweisung hat das  physikalische  Ende  des
                  Bandes erreicht (EOT).
              GMT_SM(x):  Die  Bandposition  ist:  Am  Ende  eines  "SETMARK."
                  (Immer "false" nach einer MTSEEK Anweisung.
              GMT_EOD(x):  Die  Bandposition  ist:   Am   Ende   der   letzten
                  geschriebenen Datei.
              GMT_WR_PROT(x):  Das  Laufwerk(Medium??)  ist  schreibgeschutzt.
                  Bei manchen Laufwerken kann damit auch gemeint sein, das das
                  Laufwerk kein Schreiben auf das aktuelle Medium unterstutzt.
              GMT_ONLINE(x):  Das  letzte  open()  hat  festgestellt,  das ein
                  Medium  eingelegt  ist  und  das  Laufwerk  fur  Anweisungen
                  "empfanglich" ist.
              GMT_D_6250(x),  GMT_D_1600(x),  GMT_D_800(x):  Diese "generelle"
                  Status  Information  gibt  die  aktuelle  Schreibdichte  fur
                  9-Spuren (nur 1/2" Laufwerke) aus
              GMT_DR_OPEN(x): Kein Band eingelegt
              GMT_IM_REP_EN(x): Unverzuglicher Report Mode (nicht unterstutzt)
                  Immediate report mode (not supported).
       mt_erreg
              Das  einzigste  definierte  Feld   in   mt_erreg   ist   der   "
              Fehlerzahler"  (Es  werden  nur  behobene Fehler gezahlt) in den
              unteren   16   Bits   (wie   durch    MT_ST_SOFTERR_SHIFT    und
              MT_ST_SOFTERR_MASK definiert).  Da dieser Zahler keinem Standard
              unterliegt (also von Laufwerk zu Laufwerk  unterschiedlich  sein
              kann), wird er nicht oft benutzt.
       mt_fileno
              Ausgabe  der aktuellen Datei/Archiv Nummer (zero-based).  Dieser
              Wert wird auf -1 gesetzt, wenn er nicht bekannt ist.  (Z.B. nach
              einer MTBSS oder MTSEEK Anweisung).
       mt_blkno
              Ausgabe  der  Blocknummer  der/des aktuellen Datei/Archiv (zero-
              based).  Dieser Wert wird auf -1 gesetzt, wenn er nicht  bekannt
              ist.  (Z.B. nach einer MTBSF, MTBSS oder MTSEEK Anweisung).

   MTIOCPOS - Get tape position
       Diese  Anfrage  benutzt  ein Argument vom Typ (struct mtpos *) und gibt
       die aktuelle Band-Blocknummer aus.   Diese  ist  Laufwerksabhangig  und
       nicht  die  gleiche  wie mt_blkno welche durch Verwendung von MTIOCGET.
       zuruckgegeben wird.   Das  Laufwerk  muss  ein  SCSI-2  Laufwerk  sein,
       welches  die  READ  POSITION  Anweisung unterstutzt (Laufwerksabhangige
       Adresse), oder  ein  Tandberg-kompatibles  SCSI-1  Laufwerk  (Tandberg,
       Archive, Viper, Wangtek, ... ).

       /* structure for MTIOCPOS - mag tape get position command */
       struct     mtpos {
           long   mt_blkno; /* aktielle Block Nummer */
       };

R"UCKGABEWERT

       EIO           Die Anweisung wurde nicht zu Ende gefuhrt.

       ENOSPC        Eine Schreiboperation konnte nicht beendet werden, da das
                     Ende des Mediums (EOT) erreicht wurde.

       EACCES        Es  wurde  Versucht  ein  schreibgeschutztes  Medium   zu
                     beschreiben.   (Dieser  Fehler  wird noch nicht bei einem
                     open().)  erkannt!)

       ENXIO         Beim Offen wurde festgestellt,  das  das  Laufwerk  nicht
                     vorhanden ist.

       EBUSY         Das  Laufwerk wird schon benutzt, oder der Treiber konnte
                     keine Daten "Puffern".  (or  the  driver  was  unable  to
                     allocate a buffer)

       EOVERFLOW     Es  wurde  versucht einen Block mit einer variablen Lange
                     zu lesen, der groBer als  der  interne  Treiber  "Puffer"
                     war.

       EINVAL        Einem  ioctl()  Aufruf  wurde  ein  unzulassiges Argument
                     ubergeben,   oder   die   angeforderte   BlockgroBe   ist
                     unzulassig.

       ENOSYS        Unbekannter ioctl()-Aufruf.

COPYRIGHT

       Copyright  (C)  1995  Robert K. Nichols - englisches Original Copyright
       (C) 1996 Christian Schmidt - deutsche Ubersetzung

       Dieses Manual darf sowohl in der Original, als auch  in  der  deutschen
       Version   mit   folgender  Einschrankung  benutzt,  Vervielfaltigt  und
       Vertrieben werden.  Dieser Copyright-Abschnitt und  der  "Header"  muss
       unverandert  in  allen  Kopien  beibehalten  werden.   Ferner  sind die
       zusatzlichen Vereinbarungen im "Header" dieses Manuals zu beachten.

SIEHE AUCH:

       mt(1).