From: Arnd Bergmann <arnd@arndb.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Al Viro <viro@zeniv.linux.org.uk>, Jan Blunck <jblunck@suse.de>,
Ingo Molnar <mingo@elte.hu>, John Kacur <jkacur@redhat.com>
Subject: Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal
Date: Sat, 24 Apr 2010 22:40:50 +0200 [thread overview]
Message-ID: <201004242240.51176.arnd@arndb.de> (raw)
In-Reply-To: <alpine.LFD.2.00.1004241258140.3739@i5.linux-foundation.org>
On Saturday 24 April 2010 22:01:18 Linus Torvalds wrote:
> On Sat, 24 Apr 2010, Arnd Bergmann wrote:
> >
> > The CONFIG_BKL stuff is not a requirement for doing this, but something
> > we also want to do in the next merge window, i.e. mark all BKL users
> > as CONFIG_BKL, not just the ones that use the locked_ioctl (or bkl_ioctl).
>
> .. and I think that's simply fundamentally wrong. What does it buy us,
> except for another really annoying config option? It sure as hell doesn't
> buy us any code-size (what, a couple of bytes).
With CONFIG_BKL disabled, we gain a few cyles in the scheduler,
since we no longer need to check if the BKL was held and needs to
be released. Not much, but better than just a few bytes of object size.
With CONFIG_BKL=m, what we gain is visibility: Doing an lsmod will
show you if bkl.ko is loaded and what other modules are using it.
My hope is that this will motivate people to remove it from the
remaining modules.
One of the crazier ideas was to automatically taint the kernel when
bkl.ko gets loaded. This does not gain us anything besides making a
statement.
> Quite frankly, if you want to just prepare to rename things one by one,
> then you might as well just have a single line
>
> #define bkl_ioctl ioctl
>
> and then you can do
>
> .bkl_ioctl = driver_ioctl
>
> but the thing is - what does that buy us without the ability to grep for
> and cause compile errors for drivers that haven't done this? Nothing.
Being able to grep is not the reason for this patch. The reason is that
we're trying to eliminate the BKL from all non-obscure code in the kernel
and one of the nasty ones is fs/ioctl.c, which always gets compiled in.
The trick with bkl.ko requires that any code calling lock_kernel() needs
to be a module, so the deprecated_ioctl() helper will have to be part
of bkl.ko as well.
> So seriously - I'd much rather just get one single large patch that just
> renames everything. None of this crap that makes no sense.
Ok. We'll go back to my intial approach for ioctl then, doing it all at
once. The reason for the staged approach was to avoid bisect breakage
and conflicts with maintainer updates, but since most of the remaining
users at this point are really unmaintained (or staging drivers), there's
probably not much to worry about here.
There will be one patch that does three things:
- add a deprecated_ioctl() function
- rename fops->ioctl to fops->bkl_ioctl
- set fops->unlocked_ioctl=deprecated_ioctl for any file_operations instance
that uses bkl_ioctl
Is this ok for you?
Regarding the CONFIG_BKL option, should that also be done as another patch
changing all the Kconfig files? My preference would be to have one patch
adding the Kconfig option first, giving the maintainers the choice to either
mark their code 'depends on BKL' or to remove the dependency by changing
their code.
Arnd
next prev parent reply other threads:[~2010-04-24 20:41 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-16 3:56 [GIT PULL] Preparation for BKL'ed ioctl removal Frederic Weisbecker
2010-04-22 0:48 ` [GIT PULL v2] " Frederic Weisbecker
2010-04-24 15:25 ` Frederic Weisbecker
2010-04-24 18:36 ` Linus Torvalds
2010-04-24 18:47 ` Linus Torvalds
2010-04-24 19:54 ` Arnd Bergmann
2010-04-24 20:01 ` Linus Torvalds
2010-04-24 20:40 ` Arnd Bergmann [this message]
2010-04-24 22:15 ` Linus Torvalds
2010-04-25 17:39 ` Frederic Weisbecker
2010-04-25 17:49 ` Linus Torvalds
2010-04-25 18:05 ` Frederic Weisbecker
2010-04-26 8:30 ` Arnd Bergmann
2010-04-26 18:08 ` Linus Torvalds
2010-04-26 19:12 ` Arnd Bergmann
2010-04-26 20:36 ` Linus Torvalds
2010-04-26 22:23 ` [PATCH 0/6] Push down BKL into device drivers Arnd Bergmann
2010-04-27 9:14 ` John Kacur
2010-04-26 22:24 ` [PATCH 1/6] dvb: push down BKL into ioctl functions Arnd Bergmann
2010-04-26 22:24 ` [PATCH 2/6] scsi: " Arnd Bergmann
2010-04-26 22:24 ` [PATCH 3/6] isdn: " Arnd Bergmann
2010-04-26 22:24 ` [PATCH 4/6] staging: " Arnd Bergmann
2010-04-27 18:15 ` Frederic Weisbecker
2010-04-27 18:33 ` Greg KH
2010-04-26 22:24 ` [PATCH 5/6] v4l: always use unlocked_ioctl Arnd Bergmann
2010-04-26 22:24 ` [PATCH 6/6] drivers: push down BKL into various drivers Arnd Bergmann
2010-04-26 20:42 ` [GIT PULL v2] Preparation for BKL'ed ioctl removal David Miller
2010-04-26 22:09 ` Frederic Weisbecker
2010-04-26 22:32 ` Linus Torvalds
2010-04-26 23:04 ` Frederic Weisbecker
2010-04-26 7:25 ` Ingo Molnar
2010-04-26 11:29 ` Arnd Bergmann
2010-04-27 9:25 ` Ingo Molnar
2010-04-28 13:21 ` Frederic Weisbecker
2010-04-28 13:37 ` Ingo Molnar
2010-04-28 14:05 ` Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201004242240.51176.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=fweisbec@gmail.com \
--cc=jblunck@suse.de \
--cc=jkacur@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox