floppy disk controller broken
Jeremy Chadwick
koitsu at FreeBSD.org
Thu Sep 18 18:48:31 UTC 2008
On Thu, Sep 18, 2008 at 08:32:50PM +0200, Michel Talon wrote:
> On Thu, Sep 18, 2008 at 06:18:45PM +0200, Oliver Fromme wrote:
> > Michel Talon wrote:
> > > John Baldwin wrote:
> > > > It looks like the ioctl to format a track used to never report failures from
> > > > the controller. The newer driver does. What I've done with fdformat is to
> > > > make it just ignore the errors in userland instead. Try this:
> > > >
> > > > Index: fdformat.c
> > > > ===================================================================
> > > > --- fdformat.c (revision 183112)
> > > > +++ fdformat.c (working copy)
> > > > @@ -75,8 +75,7 @@
> > > > f.fd_formb_secno(i) = il[i+1];
> > > > f.fd_formb_secsize(i) = secsize;
> > > > }
> > > > - if(ioctl(fd, FD_FORM, (caddr_t)&f) < 0)
> > > > - err(EX_OSERR, "ioctl(FD_FORM)");
> > > > + (void)ioctl(fd, FD_FORM, (caddr_t)&f);
> > > > }
> > > >
> > > > static int
> > >
> > > This doesn't work any more. This time i get
> > > niobe# fdformat fd0
> > > Format 1440K floppy `/dev/fd0'? (y/n): y
> > > Processing EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE done.
> > >
> > > where only the first E takes some time to be printed, and all subsequent
> > > ones are printed instantaneously, that is all other formatting is not
> > > tried. In principle the formatting process must try each of the
> > > "sectors" in turn, and can come up with a series of V and F.
> > >
> > > Moreover, trying to write to the floppy:
> > > niobe# dd if=/dev/zero of=/dev/fd0 conv=noerror
> > > dd: /dev/fd0: Input/output error
> > > 5+0 records in
> > > 4+0 records out
> > > 2048 bytes transferred in 4.054404 secs (505 bytes/sec)
> > >
> > > I don't expect such result. Traditionnally writing works, while reading
> > > may fail.
> >
> > Maybe I misunderstand what you're saying, but ...
> > When I try to write to a floppy that has *not* been
> > successfully formatted, I very much expect to get
> > Input/output error. Anything else would be a bug.
> >
> > Best regards
> > Oliver
>
> The floppy has certainly be formatted, in the past. Perhaps i
> remember badly, i have not used floppies since years, but
> in this case the behavior with Windows, Linux and ancient FreeBSD
> was that you could write to the floppy, but could encounter errors
> while reading. Using dd conv=noerror allowed to recover the valid part.
> Under Windows you could very well use floppies partly damaged with
> bad blocks or tracks. Here the driver seems to bail out at the first
> error, so that the above commands run much faster than they should,
> a few seconds, while something of the order of a minute should be
> more realistic.
I swore in older FreeBSD (2.x days?) there was a command which was
actually used for dealing with bad sectors on floppy disks. I might
be thinking of badsect(8), can't remember...
--
| Jeremy Chadwick jdc at parodius.com |
| Parodius Networking http://www.parodius.com/ |
| UNIX Systems Administrator Mountain View, CA, USA |
| Making life hard for others since 1977. PGP: 4BD6C0CB |
More information about the freebsd-stable
mailing list