home *** CD-ROM | disk | FTP | other *** search
/ M.u.C.S. Disc 2000 / MUCS2000.iso / anwend / gemar306 / xfs / readme.1st < prev    next >
Text File  |  1997-01-21  |  14KB  |  390 lines

  1.  
  2. GEMAR-XFS-Treiber  -  Restore per Desktop             (c) Steffen Engel '95
  3.  
  4. Version 3.00 vom 24.11.95
  5.  
  6.  
  7. MiNT kann aufgrund von MultiTOS bald als System für jedermann angesehen 
  8. werden. Daher ist es sehr interessant, einen Treiber einzubinden, der 
  9. Streamer-Bänder als logisches Laufwerk anmeldet.
  10.  
  11. Diesem Zweck dient GEMAR.XFS
  12.  
  13. Einerseits können Bänder von GEMAR als Laufwerk eingeblendet werden, so da₧ 
  14. Dateien direkt über das Desktop kopiert werden können, andererseits wird ein 
  15. Device-Treiber installiert, mit dem Sie direkt auf den Streamer zugreifen 
  16. können (u:\dev\mt).
  17. Der Device-Driver dient dazu, da₧ ALLE Programme auf den Streamer zugreifen 
  18. können, denn dieses Device entspricht im Zugriff einer Datei.
  19.  
  20.  
  21. LIEFERUMFANG:
  22.  
  23.   Der Treiber ist nur für registrierte GEMAR-Benutzer erhältlich und kostet 
  24.   DM 30,-
  25.  
  26.  
  27. VORAUSSETZUNGEN
  28.  
  29.   Sie benötigen selbstverständlich einen Streamer, sowie MiNT, MultiTOS 
  30.   oder MagiC.
  31.   Für die Verwendung des XFS MUSS der Streamer Rückwärts-Spacing beherrschen. 
  32.   Im Allgemeinen können das heutzutage alle Streamer, aber ältere Geräte 
  33.   unterstützen dies nicht immer (zB Tandberg TDC 3620 mit Firmware 3.0)
  34.  
  35.  
  36. INSTALLATION
  37.  
  38.   -MiNT:
  39.  
  40.     Kopieren sie SCSIDRV.PRG in Ihren Autoordner, bzw. installieren sie CBHD 
  41.     als Festplattentreiber.
  42.  
  43.     Kopieren Sie GEMAR.XFS in Ihr MiNT/MultiTOS-Verzeichnis (C:\MINT\ oder 
  44.     C:\MULTITOS\)
  45.  
  46.     Kopieren Sie die Datei GEMARXFS.PAR in eines der Verzeichnisse C:\MINT\, 
  47.     C:\MULTITOS\, C:\SYS\ oder C:\
  48.  
  49.     Passen Sie die Datei GEMARXFS.PAR an Ihre Bedürfnisse an (siehe unter 
  50.     'PARAMETER')
  51.  
  52.     Kopieren Sie TAPE.TTP in ein Verzeichnis, in dem es von Ihrer Shell 
  53.     gefunden wird.
  54.  
  55.     Kopieren Sie GEMARCNF.CPX in Ihr CPX-Verzeichnis.
  56.  
  57.     Bei dem nächsten Booten mit MiNT/MultiTOS ist der Treiber installiert.
  58.  
  59.   -MagiC:
  60.  
  61.     Kopieren sie SCSIDRV.PRG in Ihren Autoordner, bzw. installieren sie CBHD 
  62.     als Festplattentreiber.
  63.  
  64.     Für MagiC >= 4.0 sollten sie den neuen MagiC-Loader MAGXBOOT in ihren 
  65.     Autoordner legen und SCSI.RAM in das Wurzelverzeichnis ihres 
  66.     Bootlaufwerkes.
  67.  
  68.     Kopieren Sie GEMARXFS.PRG in den Autoordner (hinter SCSIDRV.PRG) oder als 
  69.     GEMARXFS.XFS in \GEMSYS\MAGIC\XTENSION\ (nur wenn SCSI.RAM, bzw. CBHD 
  70.     installiert)
  71.  
  72.     Kopieren Sie die Datei GEMARXFS.PAR in das Wurzelverzeichnis ihres 
  73.     bootlaufwerkes.
  74.  
  75.     Passen Sie die Datei GEMARXFS.PAR an Ihre Bedürfnisse an (siehe unter 
  76.     'PARAMETER')
  77.  
  78.     Kopieren Sie TAPE.TTP in ein Verzeichnis, in dem es von Ihrer Shell 
  79.     gefunden wird.
  80.  
  81.     Kopieren Sie GEMARCNF.CPX in Ihr CPX-Verzeichnis.
  82.  
  83.     Bei dem nächsten Booten mit MagiC ist der Treiber installiert.
  84.  
  85.     Der Treiber kann auch nachträglich von Hand gestartet werden.
  86.  
  87.  
  88. VERWENDUNG DES XFS
  89.  
  90.   Das Einbinden eines GEMAR-Backups als logisches Laufwerk können Sie 
  91.   entweder über das CPX oder über TAPE.TTP steuern.
  92.   Zur Verwendung von TAPE.TTP sollten Sie die beiliegende Manual-Page lesen.
  93.  
  94.   Ein GEMAR-Backup wird als Laufwerk eingeblendet, indem im CPX-Modul der 
  95.   Button 'XFS laden' angewählt wird. Nach dem Einlesen des Index vom Band 
  96.   steht der Inhalt des Bandes in dem in der Parameterdatei angegebenen 
  97.   Laufwerk zur Verfügung.
  98.  
  99.   Von diesem Laufwerk aus können Sie Dateien kopieren, Programme starten und 
  100.   alles andere, was mit einer Festplattenpartition auch geht.
  101.  
  102.   Was jedoch nicht funktioniert, ist Dateien auf das Laufwerk zu kopieren. 
  103.  
  104.   ***************************** ACHTUNG!! ********************************** 
  105.  
  106.       Entnehmen Sie auf keine Fall das Band, ohne es vorher über das CPX 
  107.       oder TAPE.TTP entladen zu haben!
  108.  
  109.  
  110. VERWENDUNG DES DEVICE
  111.  
  112.   Laden Sie das Band über TAPE.TTP, oder über das CPX-Modul mit 'DEV laden'.
  113.   Danach können Sie mit ALLEN Programmen auf das Band zugreifen.
  114.  
  115.   Beachten Sie, da₧ es nicht möglich abwechselnd Daten zu lesen und zu 
  116.   schreiben. Dies ist mit SCSI-Streamern nicht möglich und liegt in der
  117.   Natur eines Streamers.
  118.   Entweder man schreibt vom Anfang des Bandes aus (dabei wird das Band 
  119.   gelöscht!!), oder sie spulen das Band an das Ende, bevor Sie auf das Band 
  120.   schreiben.
  121.  
  122.   Somit können Sie zum Beispiel zum Austausch von Daten mit anderen Systemen 
  123.   (OS9, Unix, Minx, Linux...) Bänder mit einem TAR schreiben/lesen.
  124.   Dazu geben Sie als Archiv einfach u:\dev\mt an.
  125.  
  126.   Beispiele
  127.  
  128.     tar -c u:\dev\mt c:\
  129.     Sichern aller Dateien von Laufwerk C: auf das Band
  130.  
  131.     tar -t u:\dev\mt
  132.     Inhaltsverzeichnis des TAR-Archives auf dem Band anzeigen.
  133.  
  134.   Genauso kann natürlich cpio verwendet werden, oder man sichert einfach aus 
  135.   einem Editor heraus eine Datei als U:\dev\mt.
  136.  
  137.   ***************************** ACHTUNG!! ********************************** 
  138.       Entnehmen Sie auf keine Fall das Band, ohne es vorher über das CPX 
  139.       oder TAPE.TTP entladen zu haben!
  140.  
  141.  
  142. PARAMETER
  143.  
  144.   Die Parameterdatei enthält alle nötigen Informationen für die Ansprache des 
  145.   Streamers und die Einbindung des Treibers.
  146.  
  147.   -DEVICE       = drv
  148.     Der Laufwerksbuchstabe, unter dem das XFS installiert wird.
  149.  
  150.   -XFSNAME      = name
  151.     Mit neueren Versionen von MiNT (>= 1.08) kann das Gerät unter einem 
  152.     Namen in U:\ angelegt werden. Wenn ein MiNT >= 1.08 aktiv und XFSNAME 
  153.     angegeben sind, wird das Gerät auf diese Weise angemeldet, ansonsten 
  154.     als das in DEVICE angegebene Laufwerk.
  155.     Der Ordner erscheint nur dann in Laufwerk U:, wenn ein Band als XFS 
  156.     geladen ist.
  157.     ACHTUNG: Bitte beachten Sie die Informationen zu EINSCHRÄNKUNGEN
  158.  
  159.   -BUFFER       = num
  160.     Grö₧e des Puffers in kByte, der zur Pufferung von Lesezugriffen auf 
  161.     u:\dev\mt verwendet wird, wenn die Pufferung eingeschaltet ist.
  162.     Au₧erdem die Puffergrö₧e für Schreibzugriffe auf u:\dev\mt (kann nicht 
  163.     abgeschaltet werden)
  164.  
  165.   -BUFFERED     = ON
  166.     Die Pufferung von u:\dev\mt beim Lesen. Als Default ist die Pufferung 
  167.     abgeschaltet, kann aber mittels TAPE.TTP jederzeit eingeschaltet 
  168.     werden.
  169.  
  170.   -PREMSGTIME   = num
  171.   -POSTMSGTIME  = num
  172.     Die von GEMAR als 'Wait vor SCSI' und 'Wait nach SCSI' bekannten Werte 
  173.     (in ticks)
  174.  
  175.   -DATATIMEOUT  = num
  176.   -LOADTIME     = num
  177.   -REWINDTIME   = num
  178.   -SPACETIME    = num
  179.     Die von GEMAR als 'Data-Timeout', 'Load-Timeout', 'Rewind-Timeout' und 
  180.     'Space-Timeout' bekannten Werte (in Sekunden)
  181.  
  182.   -BLOCKSIZE    = num
  183.     Die Blockgrö₧e des Streamers
  184.  
  185.   -UNIT         = DMA|ALIA|SCSI
  186.     Der Port, an dem der Streamer angeschlossen ist
  187.  
  188.   -SCSIID       = num
  189.     Die SCSI-Id des Streamers. Wird bei DMA ignoriert
  190.  
  191.   -QFA          = NONE|SEEK|LOCATE
  192.     Fähigkeiten des Streamer zu Quick-File-Access.
  193.  
  194.   -CMD          = LOAD|UNIT_READY|MODE_SELECT|PREVENT_REMOVAL
  195.     Zu verwendende Kommandos des Streamers.
  196.     Geben Sie einfach die Parameter an, die Sie auch in GEMAR verwenden. 
  197.     Sollen mehrere Kommandos gesetzt werden, so können Sie die Zeile
  198.     mehrfach schreiben, z.B.
  199.  
  200.      CMD = LOAD
  201.      CMD = MODE_SELECT
  202.      CMD = PREVENT_REMOVAL
  203.  
  204.   -KEYFILE      = path\name
  205.     Die Lage des Keyfiles von GEMAR auf Ihrer Festplatte. Diese Datei wird 
  206.     beim Laden eines XFS benötigt, um zu erkennen, ob der vordere Index 
  207.     gültig ist.
  208.  
  209. INTERNA
  210.  
  211.   Falls virtuelles oder alternatives (FAST) RAM vorhanden ist, installiert 
  212.   GEMAR.XFS eine XFRB-Struktur:
  213.  
  214.   struct {
  215.       int version;   /* Version des XFRB-cookies, $0100 = 1.00 */
  216.       char *xflock;  /* extended flock, Semaphore */
  217.       char *buffer;  /* Adresse eines Puffers im ST-RAM, mindestens 64K */
  218.       long size;     /* Puffergrö₧e */
  219.   } XFRB;
  220.  
  221.   Der XFRB stellt Gerätetreibern (z.B. für Streamer), insbesondere für die 
  222.   ACSI-Schnittstelle, eine Alternative zum _FRB des BIOS zur Verfügung und 
  223.   verhindert, da₧ es zu Kollisionen kommt, falls ein Festplattentreiber (z.B. 
  224.   bei Systemen mit virtuellem Speicher) zur gleichen Zeit den _FRB ansprechen 
  225.   will, wie der Gerätetreiber. Synchronisiert werden die Zugriffe über xflock. 
  226.   Ist die Semaphore gesetzt, darf also nur das Programm den XFRB benutzen, das 
  227.   die Semaphore gesetzt hat.
  228.  
  229.  
  230.   Fals die Struktur bereits von einem anderen Programm angelegt ist, wird sie 
  231.   vom Treiber benutzt. GEMAR benutzt ebenfalls diesen Puffer, wenn er vorhanden 
  232.   ist.
  233.  
  234.  
  235.  
  236. EINSCHRÄNKUNGEN
  237.  
  238.   Die unregistrierte Version kann im XFS-Betrieb nur 15 Dateien bearbeiten 
  239.   (15 mal Fopen).
  240.   Danach wird ein Zugriff mit EACCDN abgebrochen.
  241.  
  242.   Es ist nicht möglich auf dem Band Daten zu verändern, oder Daten auf das
  243.   Band zu kopieren. Dies liegt an der Technik von Streamern.
  244.  
  245.   Bei Streamern, die am Bandende auf Request Sense nicht BLANK CHECK, VADD 
  246.   und fehlende Blöcke in den Infobytes melden, kann der Treiber bei Reads 
  247.   von u:\dev\mt evtl. das Bandende nicht sauber erkennen.
  248.   Dies kann unter Umständen zu ewigem Lesen verdonnern (zB TAR auf einem
  249.   Band ohne Abschlu₧-Header)
  250.  
  251.   Zur Zeit kann nur das erste Backup auf dem Band bearbeitet werden.
  252.  
  253.   Verschlüsselte Backups (Password) können nicht benutzt werden.
  254.  
  255.   Bänder, die mit GEMAR < 2.0 geschrieben wurden, können nicht gelesen 
  256.   werden.
  257.  
  258.   In MiNT 1.08 und 1.09 sind zwei Fehler, die leider gro₧e Schwierigkeiten mit
  259.   XFS-Treibern machen, die nicht auf der Festplatte liegen.
  260.   Daher mu₧ man entweder MiNT 1.04 verwenden, oder die folgenden Patches in 
  261.   MiNT machen:
  262.  
  263. ****************************************************************************
  264.  
  265.   MiNT 1.08:
  266.   Korrektur von FILESYS.C durchführen:
  267.   In Prozedur disk_changed:
  268.  
  269.   *************************** FILESYS.C *******************************
  270.   TRACE(("calling mediach(%d)",d));
  271.     r = (int)mediach(d);
  272.   TRACE(("mediach(%d) == %d", d, r));
  273.   
  274.     if (r < 0) return r;
  275.   
  276.     if (r == 1) {   /* drive _may_ have changed */
  277.       r = rwabs(0, tmpbuf, 1, 0, d, 0L);  /* check the BIOS */
  278.       if (r != E_CHNG) {      /* nope, no change */
  279.         TRACE(("rwabs returned %d", r));
  280.         return (r < 0) ? r : 0;
  281.       }
  282.       r = 2;      /* drive was definitely changed */
  283.     }
  284.   *********************************************************************
  285.   
  286.   Dabei hat Eric leider eins nicht bedacht:
  287.   
  288.   -mediach ruft den Festplattentreiber auf (callext1 auf hdv_mediach)
  289.    Dieser kennt natürlich nur Festplattenlaufwerke und keine XFS-Treiber 
  290.    die nicht auf der Platte aufsetzen (CD-ROM, RAMFS, Streamer).
  291.    Daher antwortet der Treiber mit EUNDEV und MiNT meldet das Laufwerk als 
  292.    fehlerhaft.
  293.   
  294.   Daher folgende Änderung:
  295.   
  296.   ************************* FILESYS.C *********************************
  297.   TRACE(("calling mediach(%d)",d));
  298.     r = (int)mediach(d);
  299.   TRACE(("mediach(%d) == %d", d, r));
  300.   
  301.     /* r = EUNDEV:
  302.      * maybe the drive is not based on Harddisk, so the HDdriver says 
  303.      * EUNDEV.
  304.      * Ask the Filesystem for Mediachange.
  305.      * SE 16.08.93
  306.      */
  307.     if (r == EUNDEV)
  308.       {
  309.       TRACE(("request XFS for media change"));
  310.       fs = drives[d];   /* get filesystem associated with drive */
  311.       if (fs) 
  312.         if ((*fs->dskchng)(d)) { /* does the fs agree that it changed? */
  313.            drives[d] = 0;
  314.            changedrv(d); /* yes -- do the change */
  315.            return 1;
  316.            }
  317.            else return 0;
  318.       }
  319.     if (r < 0) return r;
  320.   *********************************************************************
  321.  
  322.  
  323. ***************************************************************************
  324.    FS_UNMOUNT kann nicht funktionieren, da in UNIFS.C in uni_fscntl der 
  325.    Filecookie nicht auf eine UNIFILE-Struktur zeigt, sondern auf eine 
  326.    Struktur des XFS.
  327.    Daher folgende Änderung, bis Eric sich dazu äu₧ert:
  328.   
  329.   UNIFS.C in uni_fscntl: 
  330.   ********************************************************************
  331.     } else if (cmd == FS_UNMOUNT) {  /* remove a file system's directory */
  332.       struct fs_descr *d = (struct fs_descr*)arg;
  333.       FILESYS *fs;
  334.       UNIFILE *u;
  335.   
  336.     /* first check that directory exists */
  337.       r = uni_lookup(dir, name, &fc);
  338.       if (r != 0)  return EFILNF;   /* name does not exist */
  339.       if (!d) return EFILNF;
  340.       if (!d->file_system) return EFILNF;
  341.       if (d->file_system != fc.fs)
  342.         return EFILNF;  /* not the right name! */
  343.  
  344.           /* fc->index does not point to a UNIFILE struct, as i can see
  345.            * in uni_lookup.
  346.            * So I'll get u via search of u_root.
  347.            * With this modification FS_UNMOUNT works fine with my XFS.
  348.            * SE 30.08.93
  349.            */
  350.       for (u = u_root; u && u->fs != d->file_system; u = u->next)
  351.       {
  352.       }
  353.  
  354.   /*   u = (UNIFILE*)fc.index; Korrigiert: SE 30.08.93 */
  355.   #endif
  356.   ***************************************************************************
  357.  
  358.  
  359. HISTORY
  360.     -1.0 vom 15.10.93:
  361.       erstes öffentliches Release
  362.  
  363.     -1.01 vom 27.10.93
  364.       -Wie es kommen mu₧te: ein kleiner Bug führte dazu, da₧ der SCSI-Port des
  365.        Falcon nicht angesprochen werden konnte.
  366.  
  367.     -1.10 vom 05.03.94
  368.       -Installation von XFRB 1.01
  369.       -Interne Änderungen an den SCSI-Libs.
  370.       -Wie auch in GEMAR keine Unterscheidung mehr zwischen Falcon und 
  371.        TT-SCSI. Im Parameterfile kann jetzt einfach 'SCSI' verwendet 
  372.        werden.
  373.  
  374.     -3.00 vom 24.11.95
  375.       -BugFix für neuere MiNT-Lib
  376.       -alles, was in GEMAR auch passiert ist.
  377.       -Versionsnummer zu GEMAR parallelisiert
  378.  
  379.     -3.00 vom 30.11.95
  380.       -Korrektur bei der Suche nach GEMARXFS.REG
  381.  
  382.     -3.01 vom 1.12.95
  383.       -neue SCSI-Routinen im Archiv (BugFix Falcon)
  384.       -Korrektur beim Laden der Registerdatei. Magic-Pfad war falsch 
  385.        geschrieben
  386.  
  387.  
  388.  
  389. Steffen Engel, 24.11.95
  390.