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

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Arnd Bergmann
Date: Monday, April 26, 2010 - 4:29 am

On Monday 26 April 2010, Ingo Molnar wrote:

I don't think it can be fully automated. For the majority of the modules,
your approach would work fine, but there are still the well-known
pitfalls in corner cases:

- recursive uses in functions outside of ioctl (possibly none left
  after the TTY layer is done, but who knows)
- lock-order problems with other mutexes (see DRM)
- code that depends on autorelease to allow one ioctl while another
  is sleeping. (a small number of drivers)

Semi-automated should be fine though. These rules are relatively
easy to check, so we can mass-convert all the trivial cases.

Examples for nontrivial modules are mostly file systems, see ncpfs,
afs, hpfs, ...


I think the immediate goal should be to get the BKL out of everthing
that's either used by real people or that's reasonably easy to do.
We have patches for almost all of these now [1], and I've been running
a kernel with CONFIG_BKL=n for a few weeks now. As we progress
through the remaining modules, an increasing number of systems can
run without this.

I see the next steps as:
1. make it possible to build a kernel without BKL, by removing the BKL
   from all core components for good, and making all users depend on
   CONFIG_BKL. Make it default y and put it under CONFIG_DEBUG.

2. Remove the BKL from all modules that are either easy to convert
   to a private mutex or that are relevant to real users (e.g.
   definitely DRM, but maybe not hpfs).

3. Change CONFIG_BKL to "default n, depends on DEPRECATED"

4. Remove the remaining modules that nobody knows how to fix
   or cares about. Possibly the number of modules here is close
   to zero.

5. Remove the implementation of the BKL, since no users are left.

Getting stage 1 done for 2.6.36 or even 2.6.35 should be possible but
still needs a lot of work. I think we should focus on that for now
and then see how much is left to do for the other stages.

This is still a temporary transition, but since we can't do all at
once, I don't see better way.

	Arnd

[1] http://kernelnewbies.org/BigKernelLock
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[GIT PULL] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Thu Apr 15, 8:56 pm)
[GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Wed Apr 21, 5:48 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Sat Apr 24, 8:25 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Sat Apr 24, 11:36 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Sat Apr 24, 11:47 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Arnd Bergmann, (Sat Apr 24, 12:54 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Sat Apr 24, 1:01 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Arnd Bergmann, (Sat Apr 24, 1:40 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Sat Apr 24, 3:15 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Sun Apr 25, 10:39 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Sun Apr 25, 10:49 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Sun Apr 25, 11:05 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Ingo Molnar, (Mon Apr 26, 12:25 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Arnd Bergmann, (Mon Apr 26, 1:30 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Arnd Bergmann, (Mon Apr 26, 4:29 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Mon Apr 26, 11:08 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Arnd Bergmann, (Mon Apr 26, 12:12 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Mon Apr 26, 1:36 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, David Miller, (Mon Apr 26, 1:42 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Mon Apr 26, 3:09 pm)
[PATCH 0/6] Push down BKL into device drivers, Arnd Bergmann, (Mon Apr 26, 3:23 pm)
[PATCH 1/6] dvb: push down BKL into ioctl functions, Arnd Bergmann, (Mon Apr 26, 3:24 pm)
[PATCH 2/6] scsi: push down BKL into ioctl functions, Arnd Bergmann, (Mon Apr 26, 3:24 pm)
[PATCH 3/6] isdn: push down BKL into ioctl functions, Arnd Bergmann, (Mon Apr 26, 3:24 pm)
[PATCH 4/6] staging: push down BKL into ioctl functions, Arnd Bergmann, (Mon Apr 26, 3:24 pm)
[PATCH 5/6] v4l: always use unlocked_ioctl, Arnd Bergmann, (Mon Apr 26, 3:24 pm)
[PATCH 6/6] drivers: push down BKL into various drivers, Arnd Bergmann, (Mon Apr 26, 3:24 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Linus Torvalds, (Mon Apr 26, 3:32 pm)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Mon Apr 26, 4:04 pm)
Re: [PATCH 0/6] Push down BKL into device drivers, John Kacur, (Tue Apr 27, 2:14 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Ingo Molnar, (Tue Apr 27, 2:25 am)
Re: [PATCH 4/6] staging: push down BKL into ioctl functions, Frederic Weisbecker, (Tue Apr 27, 11:15 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Frederic Weisbecker, (Wed Apr 28, 6:21 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Ingo Molnar, (Wed Apr 28, 6:37 am)
Re: [GIT PULL v2] Preparation for BKL'ed ioctl removal, Arnd Bergmann, (Wed Apr 28, 7:05 am)