Re: [PATCH] Remove BKL from fs/locks.c

From: Arnd Bergmann
Date: Tue Sep 14 2010 - 16:40:24 EST


On Tuesday 14 September 2010 22:20:22 Linus Torvalds wrote:
> End result: anybody who uses the old exports will just not link at
> all, and all in-kernel users (ie lockd etc) will now very explicitly
> have that xyz_bkl() use.
>
> After that one release, we can re-introduce the old names without the
> bkl, and let filesystems and other subsystems just decide that they
> don't want the bkl version one by one. So that first phase would be
> basically a no-op with an interface rename just so that the rest could
> then be done piece-meal.

Hmm, maybe I'm misunderstanding part of that plan, but I think it
won't work because the BKL in there seems to protect all struct file_lock
instances and they are passed around to other code, most importantly
lockd. The file_locks themselves can be accessed both using sys_flock()
etc locally and using afs/nfs/coda/... exported file systems from other
systems.

AFAICT we could end up with lockd changing data under BKL while a sys_flock()
accesses the same data under file_lock_lock, with no mutual exclusion
between the two.

Arnd
--
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/