Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal

From: Frederic Weisbecker
Date: Sun Apr 25 2010 - 13:39:46 EST


On Sat, Apr 24, 2010 at 03:15:23PM -0700, Linus Torvalds wrote:
>
>
> On Sat, 24 Apr 2010, Arnd Bergmann wrote:
> >
> > With CONFIG_BKL disabled, we gain a few cyles in the scheduler,
>
> That has _nothing_ to do with the ioctl's though.
>
> Stop mixing things up.
>
> There are two totally independent issues:
>
> - making the BKL ioctl's be explicit and findable
>
> - eventually getting rid of the BKL entirely
>
> and I think you guys are totally mixing things up, and making things WORSE
> in the process.
>
> The notion of having _three_ different "ioctl()" function pointers just
> makes me want to gag. And there is absolutely _zero_ reason for it. Tjhere
> is no way in hell that we want to have every subsystem maintainer try to
> independently do their own ioctl's. Most of the drivers that have those
> things are basically unmaintained or on the back burner anyway.
>
> So don't make the current ugly ioctl situation worse. Not even as a
> stop-gap, because there is absolutely _zero_ upside to making yet another
> new crazy temporary ioctl interface.


Our final goal was not to have three different ioctl interfaces. This state was
only deemed to be temporary. This was the only way to make the change
smoother and don't conflict with other trees with a single monolithic patch.

But if you are ok with a single one, then we are going this way and we'll send it for
the next merge window.


> And don't try to conflate the issue of ioctl and BKL. There are still
> code-paths that do lock_kernel() without the ioctl's, so the whole ioctl
> renaming has _zero_ to do with CONFIG_BKL.


It's true, but once it gets pushed down/dropped from every core parts (which
is what we are working on currently in parallel), lock_kernel() and .bkl_ioctl
is only going to be used by unmaintained drivers. This is the time where having
a CONFIG_BKL is going to make sense. And it won't be a question of saving some
bytes but improve efficiency of schedule() for those who don't need such old or
unmaintained drivers.

May be we should only start to focus on this new config once this state is reached.

And to prepare for that, are you ok with this scheme of:

- .ioctl = foo,
+ .unlocked_ioctl = bkl_ioctl,
+ .bkl_ioctl = foo,

...done at the same time as the big rename patch.
This will prepare to remove the bkl from vfs and build it conditionally
from the bkl lib, once the bkl is out the core?

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/