On Thu, May 06, 2010 at 09:40:56AM -0400, Rik van Riel wrote: > On 05/05/2010 01:34 PM, Linus Torvalds wrote: > >> - you always lock the _deepest_ anon_vma you can find. > > The emphasis should be on "always" :) > >> That means just a single lock. And the "deepest" anon_vma is well-defined >> for all anon_vma's, because each same_anon_vma chain is always rooted in >> the original anon_vma that caused it. > > It should work, but only if we always take the deepest > anon_vma lock. > > Not just in the migration code, but also in mmap, munmap, > mprotect (for split_vma), expand_stack, etc... > > Otherwise we will still not provide exclusion of migrate > vs. those events. > Are you sure? I thought this as well but considered a situation something like root anon_vma <--- rmap_walk starts here anon_vma a anon_vma b anon_vma c <--- an munmap/mmap/mprotect/etc here anon_vma d anon_vma e The rmap_walk takes the root lock and then locks a, b, c, d and e as it walks along. The mSomething event happens on c and takes the lock if rmap_walk gets there first, it takes the lock and the mSomething event waits until the full rmap_walk is complete (delayed slightly but no biggie). if mSomething gets there first, rmap_walk will wait on taking the lock. Again, there could be some delays but no biggie. What am I missing? > I'm guessing that means changing both anon_vma_lock and > page_lock_anon_vma to always take the deepest anon_vma > lock - not introducing a new function that is only called > by the migration code. > That would be the case all right but I'd prefer to have PeterZ's patches that do full reference counting of anon_vma first instead of introducing RCU to those paths. -- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>