lkml.org 
[lkml]   [2008]   [May]   [14]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateThu, 15 May 2008 00:03:46 +0200
FromAndi Kleen <>
SubjectRe: [announce] "kill the Big Kernel Lock (BKL)" tree
Linus Torvalds wrote:
> 
> On Wed, 14 May 2008, Alan Cox wrote:
>> That in itself is a problem Ingo's stuff won't help with: We have lots of
>> "magic" accidental, undocumented and pot luck BKL locking semantics
>> between subsystems that are not even visible.
> 
> The good news is that I suspect they are going away. It probably is mainly 
> tty and /proc by now, and /proc is pretty close to done.

Character devices in general.

And what's pretty nasty is that some interfaces force BKL still, so
not even new code can opt out.

> In the VFS layer, we still have 
> 
>  - the ioctl thing, obviously. That's just mind-numbing "move things 
>    down", not hard per se. But there's a *lot* of them (and I suspect the 
>    huge majority of them don't actually need it, since they'd already be 
>    racing against read/write anyway if they did).
> 
>  - default_llseek(). Probably the same, just a lot less of it.

I had some patches for those.

> 
>  - superblock read/write.
> 

- fasync

[had some patches for "fasync_locked", not sure if it's worth it]

- character device open

That's a nasty one. Either open_unlocked or a special cdev_init?

> and the latter one in particular is really dubious (we already have 
> "[un]lock_super()" around it all, I think).
> 
> The core kernel, VM and networking already don't really do BKL. And it's 
> seldom the case that subsystems interact with other unrelated subsystems 
> outside of the core areas.
> 
> So it's a lot of work, no doubt, but I do think we should be able to do 
> it. The most mind-numbing part is literally all the ioctl crud. There's 
> more ioctl points than there are lock_kernel() calls left anywhere else.

I tried to recruit kernel janitors some time ago to just do all the
ioctl -> ioctl_unlocked/explicit lock_kernel changes. There were a few
patches generated but the effort died down then.

BTW for ioctl the dynamic instrumentation method proposed also won't
work because it's basically impossible to exercise all these ioctls

-Andi




\
 
 \ /
  Last update: 2008-05-15 00:07    [from the cache]
©2003-2008