don@allegra.UUCP (D. Mitchell) (10/02/84)
To answer someone's question, many controllers don't guarantee what will happen if you write records longer than 2000 bytes. In practice, 4K or 8K is fine. If you really write huge records (65K) you might get away with it, but you're running a big risk of getting phase errors, and you're not going to get that much more data on the tape. When I was a grad student, we worked on an 11/70 with 8 tape drives. People walked in and out mounting tapes and turning units on and off at random times. Needless to say, that would have been absolutely impossible if we hadn't rewritten the driver from scratch. We didn't want the silly block tape device, we didn't want one kind of drive that rewound when you closed it, none of that crap. Just read and write and a bunch of ioctls for rewind, weof, backspacing, skipping... Then a bug in the scheduler haunted us. This was before someone put sleep queues in the kernel, and livelock made it impossible for 8 processes to compete for the unibus without some being permanently shut out. We put a FIFO in the driver itself. Finally, a timer issued a pseudo request every few seconds to each active unit to see what its status really was. The controller would sometimes forget (especially if you tried to do nice things like allow one unit to be written and read while another is rewinding.) I don't know if anyone else has ever done this. If you are interested, you might write to the Space Radiation Lab at Caltech to see if they will let you have the code.