Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!mcnc!rti!trt From: trt@rti.UUCP (Thomas Truscott) Newsgroups: comp.sys.pyramid Subject: alignment restrictions when writing to raw magtape Message-ID: <3106@rti.UUCP> Date: 4 Aug 89 22:36:22 GMT Distribution: comp Organization: Research Triangle Institute, RTP, NC Lines: 33 The following program, run on on OSx4.4 on a Pyramid (I forget the exact info but it has 2 10MIP cpus, and a fast tape unit), shows that if the write buffer does not begin on a 4-byte boundary, the write syscall fails with EFAULT. Why is this? Note that one can write any number of bytes to the drive, thus the buffer can *end* on an arbitrary boundary. main() { char b[9000]; int i, fd; if ((fd = open("/dev/rmt0", 2)) < 0) perror("open"); for (i = 0; i < 8; i++) if (write(fd, b+i, 43) != 43) perror("write"); else printf("%d\n", i); exit(0); } I would hope that this will be considered a (admittedly minor) bug and hope that a kernel fix is not too difficult. It it is not considered a bug, could someone point to a specific (e.g. "/dev/odk0, optical paper tape on SolOS 3.1") instance in which a similar limitation exists? (Am am aware that some disks must be given write lengths that are multiples of their sector size, that is not at issue here). Tom Truscott