Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Sep 2008 20:32:50 +0200
From:      Michel Talon <talon@lpthe.jussieu.fr>
To:        freebsd-stable@FreeBSD.ORG, jhb@FreeBSD.ORG
Subject:   Re: floppy disk controller broken
Message-ID:  <20080918183250.GA48347@lpthe.jussieu.fr>
In-Reply-To: <200809181618.m8IGIj2P050390@lurza.secnetix.de>
References:  <20080918075306.GA30709@lpthe.jussieu.fr> <200809181618.m8IGIj2P050390@lurza.secnetix.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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. 


-- 

Michel TALON




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080918183250.GA48347>