Re: disfunctional floppy driver in kernels 4.5, 4.6 and 4.7

From: Wim Osterholt
Date: Tue Jun 14 2016 - 14:43:16 EST



On Mon, Jun 13, 2016 at 02:15:15PM +0200, Jiri Kosina wrote:
> > up to vanilla kernel 4.4.13 floppy functionality performs like it should.
> > (On an x86 PC that is. With a 1.44MB diskette drive.)
> > >From kernel 4.5* and up it changed to barely usable.
> >
> > After a virgin start (cold or warm boot) with an empty diskette drive and
> > then loaded with a standard 720K diskette you may run 'mdir' (from mtools)
> > and it shows the directory fine.
> > The first time you load a standard 1.44MB diskette (wether it is a virgin
> > start or after a 720K disktette) and you run mdir, it says literally:
> >
> > plain_io: Input/output error
> > init A: could not read boot sector
> > Cannot initialize 'A:'
> >
> > After this, all subsequent runs of mdir will do fine on both floppies.
> > However, most of my floppies are in a different format. (1.6MB)
> > I rely on 'setfdprm' (from fdutils) to set the correct parameters.
> >
> > setfdprm /dev/fd0 1600/1440
> > /dev/fd0: Invalid argument
> >
> > Strace shows me:
> > ...
> > open(/dev/fd0, O_ACCMODE) = -1
> >
> > So this actually means that 'invalid argument' refers to O_ACCMODE.
>
> Hmm, could you please test with 09954bad448 reverted? (although I don't
> really have a good explanation currently how it'd be causing what you are
> observing).
>
> Thanks,
>
> --
> Jiri Kosina

Hmm. Now I need a crash course git.
After reading at www.kernel.org/pub/software/scm/git/docs/user-manual.html
I now tried:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git checkout -b new v4.5 (assuming that the first 'wrong' kernel would be best)
git revert 09954bad448 (that did something, which I assume te be good)
copied the .config file from 4.5 I had lying around and ran make.

Surprising or not, the thusly compiled kernel ran fine and I could handle
floppies like before!
(open(/dev/fd0,O_ACCMODE) succeeds.)


Regards, Wim.


----- wim@xxxxxxxxxxxxxx -----