Annotation of researchv10dc/cmd/oworm/scsi/scsi.ms, revision 1.1.1.1

1.1       root        1: .so /usr/lib/tmac/tmac.s
                      2: .so /usr/lib/tmac/tmac.cs
                      3: .tr ~ 
                      4: .\" .RP here gives release paper (no cs)
                      5: .\" following arg should be removed so itds can get their jollies
                      6: .TI
                      7: Using the SONY WORM drive and jukebox
                      8: .AH "Andrew Hume" MH 11271 6262 2C-471 research!andrew ""
                      9: .SA
                     10: .FP palatino
                     11: This note describes the software available for handling
                     12: Write-Once-Read-Many (WORM) optical disks.
                     13: Some of the software is applicable to most devices with a SCSI interface.
                     14: .SE
                     15: .KW "optical disk" "SCSI" "" ""
                     16: .TY IM y
                     17: .NU 11271 880913 01 39199-11 ""
                     18: .MY "" "" y "" "" "" ""
                     19: .PR 0
                     20: .RL y
                     21: .CO y
                     22: Paul Glick
                     23: Ted Kowalski
                     24: Marty Shannon
                     25: M J Sheehan
                     26: E J Sitar
                     27: .CE
                     28: .CV y
                     29: .CE
                     30: .SC 11
                     31: .SH
                     32: .FP palatino
                     33: Introduction
                     34: .de CS
                     35: .DS
                     36: .nf
                     37: .ft CW
                     38: .ps 8
                     39: .vs 9.5
                     40: .ta 8n +8n +8n +8n +8n
                     41: .in 10n
                     42: ..
                     43: .de CE
                     44: .DE
                     45: ..
                     46: .PP
                     47: Optical drives are quite trendy nowadays (mid 1988).
                     48: The AT&T Bell Laboratories Computation Centers are doing
                     49: cost and performance evaluations of available hardware.
                     50: There even plans for an official AT&T file backup product based on WORMs.
                     51: For now and the next several years, WORM disks are the dominant
                     52: optical disk technology.
                     53: .PP
                     54: WORM disks range in size from 3.5 to 13 inches in diameter
                     55: and have capacities between a few hundred megabytes to a few gigabytes.
                     56: They can either be double-sided or single-sided
                     57: (but in general drives are single-sided;
                     58: double-sided disks must be ejected and then turned over
                     59: in order to access the second side).
                     60: There is also a tradeoff between capacity and speed of access.
                     61: Disks which spin at a constant angular velocity (CAV) are much faster
                     62: (a factor of 2\-3) at moving the heads to a given spot than disks
                     63: which spin at a constant linear velocity at the reading head (CLV).
                     64: On the other hand, the CLV disks typically have a 50% greater capacity
                     65: than the CAV disks.
                     66: All other characteristics are about the same, including transfer rate.
                     67: For example, the disks we use are
                     68: .TS
                     69: center;
                     70: c l.
                     71: disk type      WDM-3DL0 (CLV)
                     72: disk size      12in
                     73: disk capacity  3.2GB (1.6GB/side)
                     74: seek time      600ms (1/3 stroke?)
                     75: read rate      ~200KB/s
                     76: write rate     ~75KB/s
                     77: .TE
                     78: I/O rates are measured on a multi-user timesharing system;
                     79: dedicated systems can do about 40% better.
                     80: .PP
                     81: Most WORM disks interface to computers by the SCSI bus.
                     82: Our computing environment (VAXen) doesn't support SCSI directly;
                     83: we use SCSI controllers that attach to the Unibus.
                     84: This is not as bad as it seems because for once, DEC had a good idea and
                     85: designed and implemented a device independent protocol
                     86: (Mass Storage Control Protocol or MSCP) for its mass storage devices.
                     87: The protocol handles arbitrary sized disks and views mass storage
                     88: as a virtual array of 512 byte blocks with no errors.
                     89: The lucky break for us is that third party vendors sell controllers
                     90: that take a SCSI disk on one side and on the other appear as a MSCP disk,
                     91: hiding dirty laundry such as bad block replacement and so on.
                     92: The end result is that we describe these controllers as regular DEC disks
                     93: and everything just works; at least, in theory.
                     94: I describe some rude exceptions below.
                     95: .PP
                     96: The software is divided into two parts.
                     97: The main body of code implements a file system within an arbitrary Unix file.
                     98: Normally, the file is a raw optical disk but it can be a regular Unix file.
                     99: In this latter guise, the software is much like a faster analog of
                    100: .I tar (1).
                    101: The other bunch of code is specific to SCSI and takes advantage of
                    102: SONY functionality beyond the basic disk functions.
                    103: .SH
                    104: The WORM software
                    105: .PP
                    106: The WORM file system code is both extensive and uninteresting.
                    107: It is adequately described in the manual entry.
                    108: The data layout on disk is a little peculiar, at least to the WORM manufacturers.
                    109: It is a linked list of segments, every
                    110: .CW "worm write"
                    111: command generating a new segment.
                    112: Each segment has the name, address,
                    113: .I stat
                    114: information, and data for a list of files.
                    115: The only trick here is that the pointer to the next segment
                    116: must be preallocated.
                    117: The main advantages of the design are robustness, simplicity
                    118: and efficiency.
                    119: The main disadvantage is that as more of the disk gets used,
                    120: it requires more CPU time to build the internal directory
                    121: as it is built by processing each segment in turn.
                    122: (This is fixed by the
                    123: .CW "worm btree"
                    124: command which build converts the directory into
                    125: .I cbt (1)
                    126: form and stores this at the end of the disk.)
                    127: .PP
                    128: The other disadvantage is that we need to recognize a block
                    129: that we have never written (the end of the linked list).
                    130: Regrettably, the WORM manufacturers regard this as an error
                    131: and so it is important that the MSCP-SCSI controller allows
                    132: the user to distinguish between this kind of error
                    133: (called a blank check in WORMland)
                    134: and a real read error (failing to read data we wrote).
                    135: In our environment, which admittedly deals poorly with errors of any kind,
                    136: this entails the driver in the operating system returning a different error
                    137: code (say,
                    138: .CW ENXIO
                    139: rather than the normal
                    140: .CW EIO ).
                    141: Every controller manufacturer signals blank check differently!
                    142: Emulex doesn't want you to know; they maintain that the mapping
                    143: from SCSI error codes to MSCP error codes, that is, how a blank check
                    144: is reported, is proprietary and won't tell you.
                    145: U.S. Design does exactly the right thing by returning
                    146: the MSCP ``forced data error'' code.
                    147: The MSCP standard says this is a special data error
                    148: whose meaning is controller-specific.
                    149: T.D. Systems returns a ``header compare'' data error,
                    150: rationalizing that no SCSI disk would ever return such an error.
                    151: (There is also a rumor that this is compatible with Emulex
                    152: but I am unable to verify.)
                    153: Unfortunately, other MSCP devices might so we are forced to handle
                    154: this special case in the MSCP driver.
                    155: .SH
                    156: The SCSI software
                    157: .PP
                    158: There are two programs:
                    159: .I scsish
                    160: and
                    161: .I "worm mount" .
                    162: The former is a shell with many commands to manipulate SCSI devices
                    163: although I have only tried it on SONY disks.
                    164: There is more than a little dependence on SONY specifics.
                    165: The latter does some jukebox specific stuff conveniently.
                    166: .PP
                    167: Caveat:
                    168: be careful about doing direct SCSI manipulation of a drive
                    169: you are accessing via MSCP.
                    170: The MSCP controllers have strong beliefs that they are the sole master of the drive
                    171: and are sensitive to changes in the state of the drive.
                    172: Unexpected changes are often rewarded by a hung controller,
                    173: cured only by a system reboot.
                    174: .PP
                    175: The command grammar for
                    176: .I scsish
                    177: is available via the
                    178: .CW help
                    179: command; this listing is generated from the
                    180: .I yacc (1)
                    181: grammar and is always correct.
                    182: Before discussing individual commands, we need to absorb some SCSI basics.
                    183: SCSI transactions are between an initiator and a target.
                    184: Both have bus ID's, a number between 0 and 7.
                    185: Typically, the host controller bus ID is 7 and the jukebox is 2.
                    186: The target is considered to have up to 8 logical units, each with a distinct
                    187: Logical Unit Number (LUN).
                    188: These numbers are typically set via DIP switches on the drives used.
                    189: Transactions have a SCSI status; the most common are
                    190: .I good
                    191: (the transaction succeeded),
                    192: .I busy
                    193: (the target did not respond)
                    194: and
                    195: .I check
                    196: (the command failed).
                    197: In the latter, a
                    198: .CW sense
                    199: command can be used to find out why it failed.
                    200: Normally,
                    201: .I scsish
                    202: reports errors rather than retrying.
                    203: (It will retry a few times on receiving a busy.)
                    204: In general, commands only take a LUN (or drive).
                    205: The target bus ID is set by the
                    206: .CW id
                    207: command (it defaults to the jukebox).
                    208: The following is a description of
                    209: .I some
                    210: of the commands.
                    211: An effort has been made to make the output somewhat self-explanatory;
                    212: if in doubt, consult the jukebox manual.
                    213: A basic checkout consists of
                    214: .CW sense~0 ,
                    215: .CW config ,
                    216: .CW status ,
                    217: and perhaps the diagnostics (see the
                    218: .CW internal
                    219: command).
                    220: Some commands accept shortened forms (like
                    221: .CW rel
                    222: for
                    223: .CW release ).
                    224: .de GG
                    225: .IP "\\fB\\$1\\f1" 20n
                    226: .if \w"\\fB\\$1\\f1"-20n \{
                    227: .br \}
                    228: ..
                    229: .ne 1i
                    230: .GG alternate
                    231: gives the bad block replacement numbers.
                    232: .GG capacity
                    233: gives the capacity of the disk; both the number and size of blocks
                    234: in decimal and hexadecimal.
                    235: .CS
                    236: capacity 0
                    237: drive 0: capacity 1638000x1024 (18fe70x400)
                    238: .CE
                    239: .GG config
                    240: describes the configuration of your jukebox, controllers,
                    241: and drives.
                    242: It gives the numbers of drives and controllers, their versions (ROM IDs)
                    243: and the type of Unibus controller.
                    244: .CS
                    245: config
                    246: config(2,0): WORM device, '    SONY     WDA-3000-10 2.D', 1 controller, 2 drives
                    247:        Unibus-SCSI controller=T.D. Systems Viking
                    248:        ROMS: upper controller=x2, IF-129=x24, SY-46=x24, SS-30=x24
                    249: .CE
                    250: .GG copy
                    251: does third party copying between two drives.
                    252: (Third party means the initiator just says go;
                    253: the data only goes between the drives.)
                    254: I have copied an entire side of a disk in this way
                    255: at about 75KB/s independent of host speed.)
                    256: .GG disk~eject~\f4drive
                    257: eject the disk in the given drive.
                    258: .GG disk~release~\f4drive~shelf~side
                    259: release the disk in
                    260: .I drive
                    261: to
                    262: .I shelf .
                    263: The side (specified as
                    264: .CW a
                    265: or
                    266: .CW b )
                    267: means whether or not to invert the disk on the way to the shelf
                    268: (say
                    269: .CW b
                    270: to invert).
                    271: If the shelf and side are missing, it returns to wherever it came from.
                    272: .CS
                    273: disk rel 0 34 a
                    274: .CE
                    275: .GG disk~set~\f4shelf~side~drive
                    276: the opposite of
                    277: .CW disk~release .
                    278: New disks are loaded from shelf
                    279: .CW 127~a .
                    280: Note that 127 is a virtual shelf; the disks will reside on any shelf
                    281: which hasn't been the destination of a
                    282: .CW disk~release
                    283: command.
                    284: In general, the disk won't be moved to a physical drive until it needs to.
                    285: Thus, to ensure physical loading a disk, you need to follow a
                    286: .CW disk~set
                    287: by (say) a
                    288: .CW start
                    289: command.
                    290: Also, to even the load, logical units alternate between physical drives.
                    291: This is transparent unless one drive has a problem, in which case
                    292: (in a two drive system) the problems will only appear every second time
                    293: you use the disk.
                    294: .GG id~\f4number
                    295: set the target bus ID to
                    296: .I number .
                    297: The jukebox, and default, is 2.
                    298: .GG inquiry~\f4drive
                    299: give a simple status for the the given drive or if no drive is given, all drives.
                    300: .CS
                    301: inq
                    302: drive 2,0: disk,write protect,,,ready (0x9)
                    303: drive 2,1: disk,writable,,,not ready (0x0)
                    304: drive 2,2: no disk,writable,,,not ready (0x40)
                    305: drive 2,3: no disk,writable,,,not ready (0x40)
                    306: drive 2,4: no disk,writable,,,not ready (0x40)
                    307: drive 2,5: no disk,writable,,,not ready (0x40)
                    308: drive 2,6: no disk,writable,,,not ready (0x40)
                    309: drive 2,7: no disk,writable,,,not ready (0x40)
                    310: .CE
                    311: .GG internal~\f4n
                    312: there are several internal diagnostics; the full list is given by
                    313: .CS
                    314: internal
                    315: internal 0: internal command table
                    316: internal 1: error information table
                    317: internal 2: arm controller diagnostics
                    318: internal 3: scsi control board diagnostics
                    319: internal 4: drive controller diagnostics
                    320: internal 5: jukebox status
                    321: .CE
                    322: The arm controller diagnostics take about 4 minutes,
                    323: the drive controller diagnostics take about 100 seconds.
                    324: The others are quite short.
                    325: The drive controller diagnostic needs a LUN.
                    326: .CS
                    327: internal 3
                    328: scsi control board diagnostics:
                    329:        ended normally (time: 7s)
                    330: internal 4 0
                    331: drive 0[upper]: drive controller diagnostics
                    332: diagnostic result: no faults (time: 97s)
                    333: test 0[drive on/off]: good
                    334: test 1[read disk id]: good
                    335: test 2[move]: good
                    336: test 3[seek]: good
                    337: test 4[blank sector search]: good
                    338: test 5[written sector search]: good
                    339: test 6[search writable area]: good
                    340: test 7[write]: diagnostic could not be done
                    341: test 8[ECC margin check]: diagnostic could not be done
                    342: test 9[read data compare]: diagnostic could not be done
                    343: diagnostic count (drive:avail): 0:199 1:0 2:0 3:0 4:0 5:0 6:0 7:0
                    344: internal 5
                    345: jukebox status: component(fatal err/err/cmds)
                    346: upper drive(0/0/38) lower drive(0/0/65) sys control(0/0/115) backup mem(0/4/4454)
                    347: .CE
                    348: The
                    349: .CW internal~4
                    350: diagnostic requires a LUN with a disk in it.
                    351: .GG media~\f4drive~start~nblocks
                    352: do a media reliability check for the given blocks
                    353: (it does about 200 blocks/sec).
                    354: Prefixing the media command with
                    355: .CW ext
                    356: gives details for every funny block.
                    357: You can also dump the information to a disk file.
                    358: .CS
                    359: media 1 0 1000
                    360: drive 1: media check for 1000 blocks [0-999], lower drive
                    361: 999 good, 1 unwritten, 
                    362: ext media 1 0 1000
                    363: drive 1: detailed media check for 1000 blocks [0-999], lower drive
                    364: lbn 0: unwritten
                    365: 999 good, 1 unwritten, 
                    366: .CE
                    367: .GG read~id~\f4drive
                    368: gives the id as used by the
                    369: .I worm
                    370: commands.
                    371: .CS
                    372: read id 1
                    373: id='backupdb2a'
                    374: .CE
                    375: .GG reset
                    376: resets the controller.
                    377: The behavior depends on the controller type.
                    378: The T.D. Systems controller resets quickly and reliably.
                    379: The U.S. Design controller causes a SCSI bus reset which resets the jukebox.
                    380: This takes about 90 seconds.
                    381: .GG sense~\f4drive
                    382: gives the sense data for the last operation.
                    383: A prefix of
                    384: .CW ext
                    385: gives the extended sense.
                    386: .CS
                    387: sense 0
                    388: sa=0x0 mscp=0x0 status=0x0(good) (ext: no sense)
                    389:         70 0 0 0 dd dd dd dd dd dd dd dd dd dd dd dd
                    390: sense 1
                    391: sa=0x0 mscp=0x0 status=0x0(good) (ext: illegal request)
                    392:         70 0 5 0 dd dd dd dd dd dd dd dd dd dd dd dd
                    393: .CE
                    394: .GG sleep~\f4number
                    395: sleep for
                    396: .I number
                    397: seconds.
                    398: This gives you time to rush to the hardware!
                    399: .GG start~\f4drive
                    400: start the given drive.
                    401: This is necessary before most commands for a disk.
                    402: .GG status
                    403: tells you all sorts of stuff, some of it interesting.
                    404: .CS
                    405: status
                    406: drive 0: ready,disk in LUN,power on,disk in drive 0, return shelf 18a (36)
                    407: drive 1: not ready,no disk in LUN,power on,disk in shelf 0
                    408: drive 2: not ready,no disk in LUN,power on,disk in shelf 0
                    409: drive 3: not ready,no disk in LUN,power on,disk in shelf 0
                    410: drive 4: not ready,no disk in LUN,power on,disk in shelf 0
                    411: drive 5: not ready,no disk in LUN,power on,disk in shelf 0
                    412: drive 6: not ready,no disk in LUN,power on,disk in shelf 0
                    413: drive 7: not ready,no disk in LUN,power on,disk in shelf 0
                    414: 0: disk,
                    415: 5: disk,
                    416: 6: disk,
                    417: 8: disk,
                    418: 18: no disk
                    419: 21: disk,
                    420: I/O shelf: no disk
                    421: carrier: disk shelf=8a (16)
                    422: upper drive: disk, LUN=0
                    423: lower drive: no disk
                    424: .CE
                    425: .GG stop~\f4drive
                    426: stop the drive from spinning.
                    427: .GG test~\f4drive
                    428: does a Test Unit Ready.
                    429: It simply returns a good/check answer.
                    430: .SH
                    431: Reliability
                    432: .PP
                    433: My WORM experience covers four pieces of hardware:
                    434: WORM drive, WORM controller, jukebox and the UNIBUS-SCSI controller.
                    435: .PP
                    436: The WORM drives have proved fairly reliable.
                    437: Two of the six drives in our installation have required service.
                    438: One has an intermittent loading problem where the disk being loaded
                    439: is continually inserted and ejected.
                    440: The other was a brand new drive in the jukebox.
                    441: It gave no overt signs of trouble but media quality diagnostics
                    442: done in that drive always gave terrible results.
                    443: The drives in the jukebox can be used by themselves;
                    444: the only difference is a  DIP switch setting
                    445: (which regrettably requires taking off the drive's front panel).
                    446: .PP
                    447: The WORM controllers had an early problem with infant mortality
                    448: (two of four were D.O.A.).
                    449: There has been no trouble since then.
                    450: .PP
                    451: The jukebox really has two parts.
                    452: One is the robotics section and the other is a smart controller
                    453: which makes the jukebox look like 8 logical drives
                    454: independent of how many physical drives there are.
                    455: (In fact, SONY measures the time to change disks by mounting two
                    456: disks in a one drive jukebox and then copying from one to another.)
                    457: The controller has worked flawlessly.
                    458: In fact, be warned;
                    459: it has battery backup and remembers where disks were and are!
                    460: The mechanical parts have been pounded on and so far have not had problems.
                    461: All in all, our jukebox experience is limited but positive.
                    462: The maintenance contract on the jukebox is relatively inexpensive.
                    463: .PP
                    464: The UNIBUS-SCSI controller has been the most exasperating piece of the puzzle.
                    465: The first attempt was the Emulex UC13 controller.
                    466: It never really worked quite right and Emulex
                    467: refused to say how a blank check was returned.
                    468: The second attempt was the U.S. Design 1158.
                    469: After four or five months,
                    470: they were able to decide exactly what the switch settings
                    471: were supposed to be and the MSCP emulation worked just fine.
                    472: The SCSI controller (that is, an 1158 acting as a pure SCSI controller)
                    473: seems to work okay (apart from not working in single user mode).
                    474: Unfortunately, the combination of the two controllers
                    475: (necessary for controlling the jukebox) is still flaky.
                    476: The MSCP controller has a tendency to hang and the SCSI controller
                    477: generates stray interrupts.
                    478: .PP
                    479: The third and most successful controller has been the T.D. Systems
                    480: Viking UDD controller.
                    481: This combines both controllers on one quad high board
                    482: (as opposed to two hex high boards for the U.S. Design setup)
                    483: for the same price as one U.S. Design board.
                    484: Despite some unpleasantness from the manufacturer (or more exactly, its president),
                    485: these boards have worked and worked well.
                    486: .SH
                    487: Ordering information
                    488: .PP
                    489: The SONY WORMS and my software are deployed at three sites within Area 112.
                    490: The distinct configurations are listed below;
                    491: the total number of WORM drives is 9.
                    492: .TS
                    493: center;
                    494: c c c
                    495: c a l.
                    496: Site   Machine Configuration
                    497: _
                    498: 1121   8550    1 controller/1 drive
                    499: 1122   11/750  1 controller/1 drive
                    500: 1122   11/750  jukebox (1 controller/1 drive)
                    501: 1127   11/750  1 controller/2 drives
                    502: 1127   11/750  jukebox (1 controller/2 drives)
                    503: .TE
                    504: .PP
                    505: The WORM hardware was purchased from U.S. Design
                    506: because they offered the UNIBUS controller.
                    507: If you want to buy from someone closer than Maryland, call SONY for a list
                    508: of distributers.
                    509: All costs are approximately correct as of mid-1988.
                    510: .TS
                    511: center;
                    512: c c c c
                    513: l a l.
                    514: Part   Part #  Cost    Supplier
                    515: _
                    516: SONY disk controller   WDA-3000 controller     $10K    U.S. Design
                    517: SONY disk drive        WDA-3000 disk drive     $12.5K  U.S. Design
                    518: SONY jukebox   WDA-3000-10 Auto Changer        $75K    U.S. Design
                    519: 1158 controller        B58V-3B $1895   U.S. Design
                    520: T.D. Systems UDD controller    Viking UDD controller   $1800   Trimarchi
                    521: .TE
                    522: You will need a converter to connect the 50 pin Berg connector on the
                    523: controller boards to the 50 pin D connector on the SONY gear.
                    524: We use ones that came with the U.S. Design controller.
                    525: It is not hard to make your own.
                    526: .TS
                    527: center;
                    528: c s
                    529: a l.
                    530: Phone numbers
                    531: _
                    532: (201) 930-6030 SONY (Bart Connors)
                    533: (617) 937-9465 T.D. Systems
                    534: (800) 356-6638 Trimarchi Inc (distributor for T.D. Systems in NJ)
                    535: (301) 577-2880 U.S. Design (Harry Garonzik)
                    536: .TE
                    537: .SG
                    538: .sp 2
                    539: Att.
                    540: .br
                    541: manual pages
                    542: .bp
                    543: worm(1)
                    544: scsi(4)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.