On Fri, 2008-01-25 at 14:03 +1100, Nick Piggin wrote: > On Wednesday 23 January 2008 17:22, Shaohua Li wrote: > > Anonymous page might have fs-private metadata, the page is truncated. As > > the page hasn't mapping, page migration refuse to migrate the page. It > > appears the page is only freed in page reclaim and if zone watermark is > > low, the page is never freed, as a result migration always fail. I > > thought we could free the metadata so such page can be freed in > > migration and make migration more reliable? > > Anonymous pages should not have fs-private metadata. > > Orphaned pages I guess you mean? yes, maybe, but the comments in truncate_complete_page called the page anonymous. > They should not be accessable via > the pagecache or the page tables, so how do they keep tangling up > migration? Where/how is migration finding these pages?! the page is still in lru list. Memory hot remove will try to migrate the page.
Thanks, Shaohua > > > > diff --git a/mm/migrate.c b/mm/migrate.c > > index 6a207e8..6bc38f7 100644 > > --- a/mm/migrate.c > > +++ b/mm/migrate.c > > @@ -633,6 +633,17 @@ static int unmap_and_move(new_page_t get_new_page, > > unsigned long private, goto unlock; > > wait_on_page_writeback(page); > > } > > + > > + /* > > + * See truncate_complete_page(). Anonymous page might have > > + * fs-private metadata, the page is truncated. Such page can't be > > + * migrated. Try to free metadata, so the page can be freed. > > + */ > > + if (!page->mapping && !PageAnon(page) && PagePrivate(page)) { > > + try_to_release_page(page, GFP_KERNEL); > > + goto unlock; > > + } > > + > > /* > > * By try_to_unmap(), page->mapcount goes down to 0 here. In this case, > > * we cannot notice that anon_vma is freed while we migrates a page. > > > > > > -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/