Re: [PATCH 06/10] migrate: add hugepage migration code tomove_pages()

From: Naoya Horiguchi
Date: Tue Mar 26 2013 - 16:38:10 EST


On Tue, Mar 26, 2013 at 11:02:21AM +0100, Michal Hocko wrote:
> On Tue 26-03-13 03:06:18, Naoya Horiguchi wrote:
> > On Mon, Mar 25, 2013 at 02:36:44PM +0100, Michal Hocko wrote:
> > > On Fri 22-03-13 16:23:51, Naoya Horiguchi wrote:
> > > > @@ -1164,6 +1175,12 @@ static int do_move_page_to_node_array(struct mm_struct *mm,
> > > [...]
> > > > !migrate_all)
> > > > goto put_and_set;
> > > >
> > > > + if (PageHuge(page)) {
> > > > + get_page(page);
> > > > + list_move_tail(&page->lru, &pagelist);
> > > > + goto put_and_set;
> > > > + }
> > >
> > > Why do you take an additional reference here? You have one from
> > > follow_page already.
> >
> > For normal pages, follow_page(FOLL_GET) takes a refcount and
> > isolate_lru_page() takes another one, so I think the same should
> > be done for hugepages. Refcounting of this function looks tricky,
> > and I'm not sure why existing code does like that.
>
> Ohh, I see. But the whole reference is taken just to release it in goto
> put_and_set because isolate_lru_page elevates reference count because
> other users require that. I think you do not have to mimic this behavior
> here and you can drop get_page and use goto set_status.

OK, thanks.
Naoya
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/