Messages in this thread | | | Date | Wed, 17 Mar 2010 13:19:12 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | Re: [PATCH 02/11] mm,migration: Do not try to migrate unmapped anonymous pages |
| |
On Wed, 17 Mar 2010 13:15:14 +0900 Minchan Kim <minchan.kim@gmail.com> wrote:
> On Wed, Mar 17, 2010 at 12:15 PM, KAMEZAWA Hiroyuki > <kamezawa.hiroyu@jp.fujitsu.com> wrote: > > On Wed, 17 Mar 2010 12:00:15 +0900 > > Minchan Kim <minchan.kim@gmail.com> wrote: > > > >> On Wed, Mar 17, 2010 at 11:12 AM, KAMEZAWA Hiroyuki > >> > BTW, I doubt freeing anon_vma can happen even when we check mapcount. > >> > > >> > "unmap" is 2-stage operation. > >> > 1. unmap_vmas() => modify ptes, free pages, etc. > >> > 2. free_pgtables() => free pgtables, unlink vma and free it. > >> > > >> > Then, if migration is enough slow. > >> > > >> > Migration(): Exit(): > >> > check mapcount > >> > rcu_read_lock > >> > pte_lock > >> > replace pte with migration pte > >> > pte_unlock > >> > pte_lock > >> > copy page etc... zap pte (clear pte) > >> > pte_unlock > >> > free_pgtables > >> > ->free vma > >> > ->free anon_vma > >> > pte_lock > >> > remap pte with new pfn(fail) > >> > pte_unlock > >> > > >> > lock anon_vma->lock # modification after free. > >> > check list is empty > >> > >> check list is empty? > >> Do you mean anon_vma->head? > >> > > yes. > > > >> If it is, is it possible that that list isn't empty since anon_vma is > >> used by others due to > >> SLAB_DESTROY_BY_RCU? > >> > > There are 4 cases. > > A) anon_vma->list is not empty because anon_vma is not freed. > > B) anon_vma->list is empty because it's freed. > > C) anon_vma->list is empty but it's reused. > > D) anon_vma->list is not empty but it's reused. > > E) anon_vma is used for other object. > > That's because we don't hold rcu_read_lock. > I think Mel met this E) situation. > Hmm.
> AFAIU, even slab page of SLAB_BY_RCU can be freed after grace period. > Do I miss something? > I miss something. Sorry for noise.
Maybe we need check page_mapped() before calling try_to_unmap() as vmscan does. Thank you for your help.
Thanks, -Kame
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |