Raw vs. block device. I"m confused.
Spencer W. Thomas
thomas at utah-gr.UUCP
Mon Jan 16 15:22:18 AEST 1984
In general, most UNIX magtape drivers use the following conventions with
the RAW device:
read(fh, buf, nbytes) returns -1 when nbytes < physical record size
otherwise,
read(fh, buf, nbytes) returns the actual number of bytes in the record
(i.e., it transfers only a single record, regardless of the
byte count.)
I have always ascribed the former behavior to a limitation of the
controller; it transfers a full record or nothing.
If you think about this, you will see that can't be the case - there is
no way to know the record size without reading it! I think that most
tape controllers will read a "partial" record, just dumping the "unread"
bytes on the floor. They will probably set an error bit, too,
indicating that you lost some data. In any case, you will usually not
get anything but your buffer written on (although I recall some really
interesting stories about early Vax tape controllers).
=Spencer
More information about the Comp.unix
mailing list