Re: [announce] "kill the Big Kernel Lock (BKL)" tree
From: Andi Kleen
Date: Wed May 14 2008 - 18:04:00 EST
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
--
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/