On Mon, Oct 18, 2010 at 12:21:05PM -0400, Christoph Hellwig wrote: > On Mon, Oct 18, 2010 at 06:16:50PM +0200, Andi Kleen wrote: > > > Hiding the type of lock, and hiding the fact that it sets the low bit? > > > I don't agree. We don't have synchronization in our data structures, > > > where possible, because it is just restrictive or goes wrong when people > > > don't think enough about the locking. > > > > I fully agree. The old skb lists in networking made this mistake > > long ago and it was a big problem, until people essentially stopped > > using it (always using __ variants) and it was eventually removed. > > > > Magic locking in data structures is usually a bad idea. > > Err, there is no implicit locking in the calls to hlist_*. There > is just two small wrappers for the bit-lock/unlock so that the callers > don't have to know how the lock is overloaded onto the pointer in the > list head. But it is still "magic". Because you don't even know whether it is a spin or sleeping lock, let alone whether it is irq or bh safe. You get far more information seeing a bit_spin_lock(0, &hlist) call than hlist_lock(). Even if you do rename them to hlist_bit_spin_lock, etc. Then you need to add variants for each type of locking a caller wants to do on it. Ask Linus what he thinks about that. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html