home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / disk / backup_utils / mrbackup1.5 / docs / mrtape.doc < prev    next >
Text File  |  1995-02-27  |  9KB  |  191 lines

  1.  
  2. MRTape: SCSI Tape Handler V1.07
  3. -------------------------------
  4.  
  5. Mark R. Rinfret
  6. MRSoftware, July 1991
  7.  
  8.  
  9. This  is  a  tape  handler  designed  primarily  for MRBackup Professional.
  10. Portions  of  this  handler  were  originally  derived from code written by
  11. Markus  Wandel  and  Bob  Rethemeyer.  I am very grateful to them for their
  12. contributions  to  my  understanding of SCSI tape operations.  
  13.  
  14. The current version of mrtape-handler represents a complete rewrite of the
  15. earlier code and sports many new features, several of which were designed
  16. specifically to support MRBackup Professional. It is known to support the
  17. following SCSI tape drives:
  18.  
  19.     Wangtek 5XXX ES
  20.         This drive has an on-board 64K byte cache. Specify "64" as the
  21.         buffer size if you can afford it (this results in 128k bytes
  22.         being set aside by the handler, so plan accordingly). I believe
  23.         you'll get optimal results with MRBackup if you also set "his"
  24.         buffer size to 64K. This results in an optimal double-buffering
  25.         arrangement.
  26.  
  27.     Data Cartridge Technology MCD-40 (and -20)
  28.         This drive uses a fixed-size block of 8192 bytes. Specify "8" as
  29.         the buffer size in your mountlist entry. This drive does not seem
  30.         to provide any reasonable asynchronous behavior. I was quite
  31.         disappointed with its performance compared to the Wangtek or the
  32.         Sony.
  33.  
  34.     Archive ????
  35.  
  36.     Sony SDT-1000       (added 03/30/91)
  37.         On the SONY DAT drive, it is currently assumed that the drive
  38.         defaults to "variable block size" mode. Since this is the
  39.         vendor-preferred mode, MRBackup uses it. The drive is a real
  40.         performer, though settling time after a rewind is a bit
  41.         unsettling. :-)
  42.  
  43.     Tandberg 3600 series
  44.         This is quite similar to the WangTek drive. It has an on-board
  45.         64K byte cache, though only 60K is really available for buffering.
  46.         This one may have a few glitches when run in asynchronous mode.
  47.  
  48.  
  49. The  use  of  the  word  "handler"  is  significant.  This is not a "device
  50. driver".   It  responds to AmigaDOS I/O packets.  Implementing tape support
  51. in  this way (as opposed to embedding SCSI direct calls within the MRBackup
  52. Professional  program)  provides  a large degree of device independence for
  53. MRBackup  Professional.   MRBackup  Pro  simply  writes  a  stream  of data
  54. (encoded  in  MRBackup's  "FastDisk"  format) to the Backup Path.  This may
  55. just  as  easily  be  the SER:  device, a file (local or networked) or some
  56. other device configured to respond to standard filesystem calls.
  57.  
  58. Here are the packets supported and the degree to which they are supported:
  59.  
  60.     ACTION_FINDINPUT
  61.         Opens the drive for exclusive read access only.
  62.  
  63.     ACTION_FINDOUTPUT
  64.         Opens the drive for exclusive write access only.
  65.  
  66.     ACTION_INFO (26)
  67.     ACTION_DISK_INFO
  68.         These fill in an InfoData structure with as much useful information
  69.         as possible. Specifically, an attempt is made to fill in the 
  70.         following fields:
  71.  
  72.           id_DiskState
  73.             If a tape is inserted, this field is set to ID_UNREADABLE_DISK.
  74.             If no tape is inserted, this field is set to ID_NO_DISK_PRESENT.
  75.             
  76.           id_NumBlocks
  77.             An approximation of the tape cartridge capacity is provided.
  78.  
  79.           id_BytesPerBlock
  80.             If a 3M drive (MCD-40) is detected, 8192 is assumed. Otherwise,
  81.             512 is assumed.
  82.  
  83.           id_DiskType
  84.             This field is set to 'TAPE'. The first 4 characters of the
  85.             manufacturer's code might be used in a later revision.
  86.  
  87.           id_InUse
  88.             This field is set to the boolean equivalent of "tape cartridge
  89.             inserted".
  90.  
  91.     ACTION_LOCATE_OBJECT (Lock)
  92.         A rather hokey lock is created and returned. It should be sufficient
  93.         for programs which require such things.
  94.  
  95.     ACTION_EXAMINE_OBJECT (Examine)
  96.         This packet is recognized, but ERROR_OBJECT_WRONG_TYPE is currently
  97.         returned.
  98.  
  99.     ACTION_READ
  100.         Just what you'd expect.
  101.  
  102.     ACTION_WRITE
  103.         Just what you'd expect.
  104.  
  105.     ACTION_END (Close)
  106.         If the write buffer has any residue, it is padded to the device block 
  107.         size with zeros and written to the drive. If the drive is not the
  108.         3M variety, a filemark is then written. The device is then marked
  109.         as closed.
  110.  
  111.     ACTION_DIE
  112.         All resources allocated to the handler are released and the handler
  113.         is unloaded from memory. If you replace the current handler code
  114.         with a new version and then re-access the drive, the new code will
  115.         be loaded and initialized (great for development - no need to
  116.         reboot).
  117.  
  118. (There are others, to be documented later.)
  119.  
  120. MRBackup   currently   treats  the  backup  set  as  one  contiguous  file.
  121. Individual  files  have  special  header  blocks  and  the data blocks have
  122. control information which defines the end of each file.  There is a special
  123. control  block to mark the end of tape.  Thus, the filemark isn't typically
  124. ever   "read"   and   isn't   required,   which   is   how   the  3M  drive
  125. (block-structured) is able to work.
  126.  
  127. MRTape-Handler uses asynchronous I/O, but you might not believe it when you
  128. use the 3M tape drive.  I'm not sure what the problem is, but I wasn't able
  129. to get good performance from the 3 1/2" ministreamer that I tested with.
  130.  
  131. The  buffer size parameter in the Startup field of the mountlist entry must
  132. be  chosen with care.  This is the size of 1 buffer (as opposed to 1 block,
  133. as  is  typically  specified  for  filesystems).  The handler allocates one
  134. buffer  for  synchronous  I/O  and two buffers when using asynchronous I/O.
  135. For example, I reccommend 8 (8192 bytes) for the 3M drive (this is required
  136. by  the  drive)  and 64 (65536 bytes) for the Wangtek 5150 ES.  The Wangtek
  137. has  a  64K  cache buffer.  Setting MRTapeHandler to use 64K buffers causes
  138. 128K  bytes to be allocated (a significant chunk!) but performance is quite
  139. good.   To  obtain  the  best performance for other drives, you may need to
  140. experiment.   Use  MRBackup  Professional's  "Throughput"  measurement as a
  141. relative  guide  to  the  effects that changes in buffer sizes have on your
  142. backups.
  143.  
  144. Here is a sample mountlist entry for MRTape-Handler:
  145.  
  146. /*  This is a mountlist entry for the SCSI tape handler provided with   */
  147. /*  MRBackup. Pay particular attention to the StartUp message. Its      */
  148. /*  format is:                                                          */
  149. /*      "<buffer_size>/<device_name>/<unit>/<luno>/<flags>"             */
  150. /*                                                                      */
  151. /*  where                                                               */
  152. /*      <buffer_size> is the total amount of buffer memory, specified   */
  153. /*      in K (K = 1024);                                                */
  154. /*                                                                      */
  155. /*      <device_name> is the SCSI device driver name;                   */
  156. /*                                                                      */
  157. /*      <unit> is the SCSI unit number;                                 */
  158. /*                                                                      */
  159. /*      <luno> is the SCSI logical unit number (not currently used but  */
  160. /*      must be set to zero);                                           */
  161. /*                                                                      */
  162. /*      <flags> is a set of bits controlling certain tape drive options */
  163. /*      The bit values, which may be added together are:                */
  164. /*                                                                      */
  165. /*          1   asynchronous mode, 0 = synchronous mode                 */
  166. /*          2   use on-board buffer, 0 = don't use on-board buffer      */
  167. /*                                                                      */
  168. /*          Example: to enable async mode and the on-board buffer, the  */
  169. /*          <flags> value would be 3 (1 + 2).                           */
  170. /*                                                                      */
  171. /*          Other flag bits will be provided as new features are added. */
  172.  
  173. MRTAPE:    Handler = l:mrtape-handler
  174.            StartUp = "64/scsi.device/4/0/3"
  175.            Stacksize = 4000
  176.            Priority = 10
  177.            GlobVec = -1
  178. #
  179.  
  180.  
  181. To determine the version number of MRTapeHandler, view the handler with any
  182. binary  file  editor  and  look  for  a string that begins with the letters
  183. "$VER:".  You may also use the "version" command under WorkBench 2.0.
  184.  
  185.  
  186. A  small  program,  named  "die",  has  been supplied with the handler.  It
  187. allows you to force the handler to free up all resources and unload itself.
  188. Example:
  189.  
  190.     die mrtape:
  191.