Re: [PATCH 1/2] mm,migration: Prevent rmap_walk_[anon|ksm] seeing the wrong VMA information

Mel Gorman
2010-05-05T15:55:15Z

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