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, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>