The BKL end game
One developer who has put some significant time into BKL removal is Arnd Bergmann; Arnd has just posted a patch series which promises to eliminate the BKL altogether - almost.
To that end, a number of significant changes have been made. The block and tty subsystems both get subsystem-level mutexes to replace their use of the BKL; that is a relatively tricky job because the locking semantics provided by a mutex are rather different. An extensive effort has been made to audit and document ioctl() and llseek() functions which still require the BKL; no other function called from the file_operations structure expects the BKL now. Code still requiring the BKL is now explicitly marked in the kernel configuration system, making it possible to build BKL-free kernels. The patch set also includes a significant series from Jan Blunck removing the BKL from much of the VFS layer.
What's left is a few "mostly obscure device driver modules
".
Arnd has used a fairly large value of "mostly obscure," though; the USB
subsystem, for example, still has a BKL dependency. All told, there are 148 modules still using the BKL, most of which
are drivers. That may seem like a lot, but it's a huge step in the right
direction. Many of us may be running BKL-free kernels sooner than we might
have expected.
| Index entries for this article | |
|---|---|
| Kernel | Big kernel lock |
| Kernel | lock_kernel() |