Date: Thu, 18 Sep 2008 11:48:28 -0700 From: Jeremy Chadwick <koitsu@FreeBSD.org> To: Michel Talon <talon@lpthe.jussieu.fr>, freebsd-stable@FreeBSD.ORG, jhb@FreeBSD.ORG Subject: Re: floppy disk controller broken Message-ID: <20080918184828.GA25072@icarus.home.lan> In-Reply-To: <20080918183250.GA48347@lpthe.jussieu.fr> References: <20080918075306.GA30709@lpthe.jussieu.fr> <200809181618.m8IGIj2P050390@lurza.secnetix.de> <20080918183250.GA48347@lpthe.jussieu.fr>
next in thread | previous in thread | raw e-mail | index | archive | help
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 |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080918184828.GA25072>