Messages in this thread | | | Date | Thu, 11 May 2023 10:25:44 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH 03/32] locking/lockdep: lockdep_set_no_check_recursion() |
| |
On Wed, May 10, 2023 at 04:38:15PM -0400, Kent Overstreet wrote: > On Wed, May 10, 2023 at 10:59:05AM +0200, Peter Zijlstra wrote:
> > Have you read the ww_mutex code? If not, please do so, it does similar > > things. > > > > The way it gets around the self-nesting check is by using the nest_lock > > annotation, the acquire context itself also has a dep_map for this > > purpose. > > This might work. > > I was confused for a good bit when reading tho code to figure out how > it works - nest_lock seems to be a pretty bad name, it's really not a > lock. acquire_ctx?
That's just how ww_mutex uses it, the annotation itself comes from mm_take_all_locks() where mm->mmap_lock (the lock formerly known as mmap_sem) is used to serialize multi acquisition of vma locks.
That is, no other code takes multiple vma locks (be it i_mmap_rwsem or anonvma->root->rwsem) in any order. These locks nest inside mmap_lock and therefore by holding mmap_lock you serialize the whole thing and can take them in any order you like.
Perhaps, now, all these many years later another name would've made more sense, but I don't think it's worth the hassle of the tree-wide rename (there's a few other users since).
| |