On Mon, Apr 23, 2018 at 5:14 PM, Dan Mick <danmick@gmail.com> wrote:
On 04/23/2018 02:06 PM, Clem Cole wrote:
>
>
> On Mon, Apr 23, 2018 at 4:47 PM, Grant Taylor via TUHS
> <tuhs@minnie.tuhs.org <mailto:tuhs@minnie.tuhs.org>> wrote:
>
>     On 04/23/2018 11:51 AM, Clem Cole wrote:
>
>         By the time of 4.X, the RP06 was 'partitioned' into 'rings'
>         (some overlapping).  The 'a' partition was root, the 'b' was
>         swap and one fo the others was the rest.  Later the 'c' was a
>         short form for copying the entire disk.
>
>
>     I had always wondered where Solaris (SunOS) got it's use of the
>     different slices, including the slice that was the entire disk from.
>
>     Now I'm guessing Solaris got it from SunOS which got it from 4.x BSD
>
> ​It was not BSD - it was research.  It may have been in 6th, but it was
> definitely in 7th.  Cut/pasted from the V7 PDP-11 rp(4) man page:
>
>     *NAME*
>
>         rp − RP-11/RP03 moving-head disk
>
>     *DESCRIPTION*
>
>         The files rp0 ... rp7 refer to sections of RP disk drive 0. The
>         files rp8 ... rp15 refer to drive 1 etc. This
>
>         allows a large disk to be broken up into more manageable pieces.
>
>         The origin and size of the pseudo-disks on each drive are as
>         follows:
>
>             disk start length
>
>             0 0 81000
>
>             1 0 5000
>
>             2 5000 2000
>
>             3 7000 74000
>
>             4-7 unassigned
>
>         Thus rp0 covers the whole drive, while rp1, rp2, rp3 can serve
>         usefully as a root, swap, and mounted user
>
>         file system respectively.
>
>         The rp 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 RP files begin with rrp and end with a number
>         which selects the same disk section as the
>
>         corresponding rp file.
>
>         In raw I/O the buffer must begin on a word boundary.​
>
> ᐧ

But...that has numbers, not letters, and the third partition is not the
whole drive, the first one is....?

Yup -- disk were pretty expensive in those days ($20-30K for a <100M drive) so often people did not have more than one.  So they started with rp1, rp2 etc..
As disks dropped a little cheaper and having more than one RP06 became possible (RP06 aka IBM 3330 - project Winchester --  was a huge 200M drive - we had 3 on the Teklabs machine and that was considered very, very generous), then letters became the convention used in /dev/.  i.e. /dev/{,r}rp0{a,b,c,d..} for each of the minor numbers.

To be honest, I really don't remember - but I know we used letters for the different partitions on the 11/70 before BSD showed up.

The reason for the partition originally was (and it must have been 6th edition when I first saw it), DEC finally made a disk large enough that number of blocks overflowed a 16 bit integer.   So splitting the disk into smaller partitions allowed the original seek(2) to work without overflow.   V7 introduced lseek(2) when the offset was a long.

Clem