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

2016-06-11 Thread Wim Osterholt
On Sat, Jun 11, 2016 at 02:15:01PM +0100, One Thousand Gnomes wrote:

> > open(/dev/fd0, O_ACCMODE) = -1

> If you do 
> 
> touch foo
> 
> then compile and run the following program does it error on the newer
> kernel ?
> 
> #include 
> #include 
> 
> int main(int argc, char *argv[])
> {
>   if (open("foo", 3) == -1)
> perror("foo");
>   return 0;
> }

No errors get printed for kernel 4.4 to 4.7 .

Regards, Wim.


- w...@djo.tudelft.nl -



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

2016-06-11 Thread Wim Osterholt
On Sat, Jun 11, 2016 at 02:15:01PM +0100, One Thousand Gnomes wrote:

> > open(/dev/fd0, O_ACCMODE) = -1

> If you do 
> 
> touch foo
> 
> then compile and run the following program does it error on the newer
> kernel ?
> 
> #include 
> #include 
> 
> int main(int argc, char *argv[])
> {
>   if (open("foo", 3) == -1)
> perror("foo");
>   return 0;
> }

No errors get printed for kernel 4.4 to 4.7 .

Regards, Wim.


- w...@djo.tudelft.nl -



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

2016-06-11 Thread One Thousand Gnomes
On Sat, 11 Jun 2016 01:02:55 +0200
Wim Osterholt  wrote:

> L.S.
> 
> 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.

That looks like a bug introduced in the VFS layer rather than in the
floppy driver. A couple of Linux drivers have a weird un-Unixy hack where
you open them with a mode value of 3 to mean "control only" and /dev/fd
is the main user of this

If you do 

touch foo

then compile and run the following program does it error on the newer
kernel ?

#include 
#include 

int main(int argc, char *argv[])
{
  if (open("foo", 3) == -1)
perror("foo");
  return 0;
}



Alan


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

2016-06-11 Thread One Thousand Gnomes
On Sat, 11 Jun 2016 01:02:55 +0200
Wim Osterholt  wrote:

> L.S.
> 
> 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.

That looks like a bug introduced in the VFS layer rather than in the
floppy driver. A couple of Linux drivers have a weird un-Unixy hack where
you open them with a mode value of 3 to mean "control only" and /dev/fd
is the main user of this

If you do 

touch foo

then compile and run the following program does it error on the newer
kernel ?

#include 
#include 

int main(int argc, char *argv[])
{
  if (open("foo", 3) == -1)
perror("foo");
  return 0;
}



Alan