.\" Copyright (c) 1990 The Regents of the University of California. .\" All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" the Systems Programming Group of the University of Utah Computer .\" Science Department. .\" .\" Redistribution and use in source and binary forms are permitted provided .\" that: (1) source distributions retain this entire copyright notice and .\" comment, and (2) distributions including binaries display the following .\" acknowledgement: ``This product includes software developed by the .\" University of California, Berkeley and its contributors'' in the .\" documentation or other materials provided with the distribution and in .\" all advertising materials mentioning features or use of this software. .\" Neither the name of the University nor the names of its contributors may .\" be used to endorse or promote products derived from this software without .\" specific prior written permission. .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. .\" .\" @(#)rd.4 5.1 (Berkeley) 6/29/90 .\" .TH RD 4 "June 29, 1990" .UC 7 .SH NAME rd \- CS/80 disk interface .SH SYNOPSIS .B "master hpib? at scode?" .br .B "disk rd? at hpib? slave?" .SH DESCRIPTION This is a generic CS/80 disk driver. Only a small number of possible CS/80 drives are supported, but others can easily be added by adding tables to the driver. .PP Files with minor device numbers 0 through 7 refer to various portions of drive 0; minor devices 8 through 15 refer to drive 1, etc. The standard device names begin with ``rd'' followed by the drive number and then a letter a-h for partitions 0-7 respectively. The character ? stands here for a drive number in the range 0-7. .PP The block files access the disk via the system's normal buffering mechanism and may be read and written without regard to physical disk records. There is also a `raw' interface which provides for direct transmission between the disk and the user's read or write buffer. A single read or write call results in exactly one I/O operation and therefore raw I/O is considerably more efficient when many words are transmitted. The names of the raw files conventionally begin with an extra `r.' .PP In raw I/O counts should be a multiple of 512 bytes (a disk sector). Likewise .I seek calls should specify a multiple of 512 bytes. .SH "DISK SUPPORT" The driver interrogates the controller to determine the type of drive attached. The driver recognizes the following drives: 7912, 7914, 7933, 7936, 7937, 7945, 7957A/B, 7958A/B, 7959B, 7962, 7963, 9122, 9134, 7912, 7936, and 9122, not all of which have been tested. The origin and size of the pseudo-disks on each drive are as follows: .PP .nf .ta .5i +\w'000000 'u +\w'000000 'u +\w'000000 'u 7945/7946 partitions: disk start length cyls rd?a 112 15904 1-142 rd?b 16016 20160 143-322 rd?c 0 108416 0-967 rd?d 16016 40320 143-502 rd?e undefined rd?f undefined rd?g 36176 72240 323-967 rd?h 56336 52080 503-967 .PP 9134D partitions: disk start length cyls rd?a 96 15936 1-166 rd?b 16032 13056 167-302 rd?c 0 29088 0-302 rd?d undefined rd?e undefined rd?f undefined rd?g undefined rd?h undefined .PP 9122S partitions: disk start length cyls rd?a undefined rd?b undefined rd?c 0 1232 0-76 rd?d undefined rd?e undefined rd?f undefined rd?g undefined rd?h undefined .PP 7912P partitions: disk start length cyls rd?a 0 15904 0-70 rd?b 16128 22400 72-171 rd?c 0 128128 0-571 rd?d 16128 42560 72-261 rd?e undefined rd?f undefined rd?g 38528 89600 172-571 rd?h 58688 69440 262-571 .PP 7914CT/P partitions: disk start length cyls rd?a 224 15904 1-71 rd?b 16128 40320 72-251 rd?c 0 258048 0-1151 rd?d 16128 64960 72-361 rd?e 81088 98560 362-801 rd?f 179648 78400 802-1151 rd?g 56448 201600 252-1151 rd?h 81088 176960 362-1151 .PP 7958A partitions: disk start length cyls rd?a 252 16128 1-64 rd?b 16380 32256 65-192 rd?c 0 255276 0-1012 rd?d 16380 48384 65-256 rd?e 64764 100800 257-656 rd?f 165564 89712 657-1012 rd?g 48636 206640 193-1012 rd?h 64764 190512 257-1012 .PP 7957A partitions: disk start length cyls rd?a 154 16016 1-104 rd?b 16170 24640 105-264 rd?c 0 159544 0-1035 rd?d 16170 42350 105-379 rd?e 58520 54824 380-735 rd?f 113344 46200 736-1035 rd?g 40810 118734 265-1035 rd?h 58520 101024 380-1035 .PP 7933H partitions: disk start length cyls rd?a 598 16146 1-27 rd?b 16744 66976 28-139 rd?c 0 789958 0-1320 rd?d 83720 16146 140-166 rd?e 99866 165646 167-443 rd?f 265512 165646 444-720 rd?g 83720 706238 140-1320 rd?h 431158 358800 721-1320 .PP 9134L partitions: disk start length cyls rd?a 80 15920 1-199 rd?b 16000 20000 200-449 rd?c 0 77840 0-972 rd?d 16000 32000 200-599 rd?e undefined rd?f undefined rd?g 36000 41840 450-972 rd?h 48000 29840 600-972 .PP 7936H partitions: disk start length cyls rd?a 861 16359 1-19 rd?b 17220 67158 20-97 rd?c 0 600978 0-697 rd?d 84378 16359 98-116 rd?e 100737 120540 117-256 rd?f 220416 120540 256-395 rd?g 84378 516600 98-697 rd?h 341817 259161 397-697 .PP 7937H partitions: disk start length cyls rd?a 1599 15990 1-10 rd?b 17589 67158 11-52 rd?c 0 1116102 0-697 rd?d 84747 15990 53-62 rd?e 100737 246246 63-216 rd?f 346983 246246 217-370 rd?g 84747 1031355 53-697 rd?h 593229 522873 371-697 .PP 7957B/7961B partitions: disk start length cyls rd?a 126 16002 1-127 rd?b 16128 32760 128-387 rd?c 0 159894 0-1268 rd?d 16128 49140 128-517 rd?e 65268 50400 518-917 rd?f 115668 44226 918-1268 rd?g 48888 111006 388-1268 rd?h 65268 94626 518-1268 .PP 7958B/7962B partitions: disk start length cyls rd?a 378 16254 1-43 rd?b 16632 32886 44-130 rd?c 0 297108 0-785 rd?d 16632 49140 44-173 rd?e 65772 121716 174-495 rd?f 187488 109620 496-785 rd?g 49518 247590 131-785 rd?h 65772 231336 174-785 .PP 7959B/7963B partitions: disk start length cyls rd?a 378 16254 1-43 rd?b 16632 49140 44-173 rd?c 0 594216 0-1571 rd?d 16632 65772 44-217 rd?e 82404 303912 218-1021 rd?f 386316 207900 1022-1571 rd?g 65772 528444 174-1571 rd?h 82404 511812 218-1571 .PP .DT .fi .PP It is unwise for all of these files to be present in one installation, since there is overlap in addresses and protection becomes a sticky matter. The eight partitions as given support four basic, non-overlapping layouts, though not all partitions exist on all drive types. .PP In the first layout there are three partitions and a ``bootblock'' area. The bootblock area is at the beginning of the disk and holds the standalone disk boot program. The rd?a partition is for the root file system, rd?b is a paging/swapping area, and rd?g is for everything else. .PP The second layout is the same idea, but has a larger paging/swapping partition (rd?d) and a smaller ``everything else'' partition (rd?h). This layout is better for environments which run many large processes. .PP The third layout is a variation of the second, but breaks the rd?h partition into two partitions, rd?e and rd?f. .PP The final layout is intended for a large, single file system second disk. It is also used when writing out the boot program since it is the only partition mapping the bootblock area. .SH FILES /dev/rd[0-7][a-h] block files .br /dev/rrd[0-7][a-h] raw files .SH DIAGNOSTICS \fBrd%d err: v%d u%d, R0x%x F0x%x A0x%x I0x%x, block %d\fR .br An unrecoverable data error occurred during transfer of the specified block on the specified disk. .SH BUGS The current disk partitioning is totally bogus. CS/80 drives have 256 byte sectors which are mapped to 512 byte ``sectors'' by the driver. Since some CS/80 drives have an odd number of sectors per cylinder, the disk geometry used is not always accurate. .PP The partition tables for the file systems should be read off of each pack, as they are never quite what any single installation would prefer, and this would make packs more portable. .PP In raw I/O .I read and .IR write (2) truncate file offsets to 512-byte block boundaries, and .I write scribbles on the tail of incomplete blocks. Thus, in programs that are likely to access raw devices, .I read, write and .IR lseek (2) should always deal in 512-byte multiples. .PP A program to analyze the logged error information (even in its present reduced form) is needed.