On Thu, Sep 08, 2016 at 07:45:36AM +1000, Dave Chinner wrote: > On Mon, Sep 05, 2016 at 05:15:29PM +0200, Christoph Hellwig wrote: > > Hi Dave, > > > > I looked into killing the mrlock and ran into an unexpected problem. > > > > Currently mr_writer tracks that there is someone holding a write lock, > > lockdep on the other hand checks if the calling thread has that lock. > > > > While that generally is the right semantic, our hack to offload > > btree splits to a work item offends lockdep. E.g. this callstack > > now asserts: > > It's a semaphore, not a mutex. Semaphore locking is independent of > task context, the lock follows the object it protects, not the task > that took the lock. i.e. Lockdep is wrong to assume the "owner" of a > rw_sem will not change between lock and unlock. We've added strict owner semantics to rwsem a long time ago. If you want the actual semaphore semantics (which we greatly discourage, because you cannot do validation on it) you should use {down,up}_read_non_owner(). I'm not sure we've got write_non_owner() variants for this. Turns out, there really are very few 'semaphore' users. _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs