Messages in this thread | | | Date | Wed, 5 May 2010 16:54:54 +0100 | From | Mel Gorman <> | Subject | Re: [PATCH 1/2] mm,migration: Prevent rmap_walk_[anon|ksm] seeing the wrong VMA information |
| |
On Wed, May 05, 2010 at 08:31:42AM -0700, Linus Torvalds wrote: > > > On Wed, 5 May 2010, Mel Gorman wrote: > > > > rmap_walk() appears to be the only one that takes multiple locks but it itself > > is not serialised. If there are more than one process calling rmap_walk() > > on different processes sharing the same VMAs, is there a guarantee they walk > > it in the same order? > > So I had this notion of the list always getting deeper and us guaranteeing > the order in it, but you're right - that's not the 'same_anon_vma' list, > it's the 'same_vma' one. > > Damn. So yeah, I don't see us guaranteeing any ordering guarantees. My > bad. > > That said, I do wonder if we could _make_ the ordering reliable.
I'm still thinking of the ordering but one possibility would be to use a mutex similar to mm_all_locks_mutex to force the serialisation of rmap_walk instead of the trylock-and-retry. That way, the ordering wouldn't matter. It would slow migration if multiple processes are migrating pages by some unknowable quantity but it would avoid livelocking.
> I did > that for the 'same_vma' one, because I wanted to be able to verify that > chains were consistent (and we also needed to be able to find the "oldest > anon_vma" for the case of re-instantiating pages that migth exist in > multiple different anon_vma's). > > Any ideas? >
Not yet.
-- Mel Gorman Part-time Phd Student Linux Technology Center University of Limerick IBM Dublin Software Lab
| |