Re: 1.3.6[0-7] floppy driver broken

Robert Nichols (rnichols@interaccess.com)
Sat, 24 Feb 96 10:58 CST


On Fri, 23 Feb 1996 14:57:57 +0200 (EET)
Linus Torvalds <torvalds@cs.helsinki.fi> wrote:
>> toyland:~# dd if=/dev/zero of=/dev/fd0h1440
>> dd: /dev/fd0h1440: No such file or directory
>> 2881+0 records in
>> 2880+0 records out

> Now, I don't know what "dd" does, but I've seen programs that
>do things like this:
>
> if (write(fd, buffer, size) != size) {
> perror("device");
> exit(1);
> }

That seems to be exactly what it's doing:

rkn$ strace dd if=/dev/zero of=/dev/fd0H1440 bs=18k
...
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".., 18432) = 18432
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".., 18432) = 0
write(2, "dd: ", 4) = 4
write(2, "/dev/fd0H1440", 13) = 13
write(2, ": No such file or directory", 27) = 27
write(2, "\n", 1) = 1
write(2, "81+0 records in\n", 16) = 16
write(2, "80+0 records out\n", 17) = 17
close(3) = 0
close(4) = 0
exit(1) = ?

I guess the question is: Is it reasonable that the floppy driver should
return 0 when a write is rejected due to the device being full? I don't
see that problem with SCSI tapes:

rkn$ cat /proc/version
Linux version 1.2.13 (root@omega-3) (gcc version 2.7.2) #17 Tue Feb 20 17:13:24 CST 1996
rkn$ ls -l /dev/nst0 /dev/fd0H1440
brw-rw-rw- 1 root disk 2, 28 Nov 30 1993 /dev/fd0H1440
crw-rw-rw- 1 root root 9, 128 May 7 1994 /dev/nst0
rkn$ strace dd if=/dev/zero of=/dev/nst0 bs=32k
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".., 32768) = 32768
write(4, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0".., 32768) = -1 (I/O error)
write(2, "dd: ", 4) = 4
write(2, "/dev/nst0", 9) = 9
write(2, ": I/O error", 11) = 11
write(2, "\n", 1) = 1

-- 
Bob Nichols         rnichols@interaccess.com