Messages in this thread | | | Date | Tue, 27 Apr 2010 08:15:43 +0900 | Subject | Re: [PATCH 2/2] mm,migration: Prevent rmap_walk_[anon|ksm] seeing the wrong VMA information | From | Minchan Kim <> |
| |
On Tue, Apr 27, 2010 at 7:37 AM, Mel Gorman <mel@csn.ul.ie> wrote: > vma_adjust() is updating anon VMA information without any locks taken. > In contrast, file-backed mappings use the i_mmap_lock and this lack of > locking can result in races with page migration. During rmap_walk(), > vma_address() can return -EFAULT for an address that will soon be valid. > This leaves a dangling migration PTE behind which can later cause a BUG_ON > to trigger when the page is faulted in. > > With the recent anon_vma changes, there can be more than one anon_vma->lock > that can be taken in a anon_vma_chain but a second lock cannot be spinned > upon in case of deadlock. Instead, the rmap walker tries to take locks of > different anon_vma's. If the attempt fails, the operation is restarted. > > Signed-off-by: Mel Gorman <mel@csn.ul.ie>
Actually, I am worry about rollback approach like this. If we don't often need anon_vmas serializing, that's enough. But I am not sure how often we need locking of anon_vmas like this. Whenever we need it, we have to use rollback approach like this in future. In my opinion, it's not good.
Rik, can't we make anon_vma locks more simple? Anyway, Mel's patch is best now.
I hope improving locks of anon_vmas without rollback approach in near future.
Thanks, Mel.
-- Kind regards, Minchan Kim
| |