Re: [patch 1/2] mm, migration: add destination page freeing callback

David Rientjes
2014-05-01T21:02:36Z

On Thu, 1 May 2014, Naoya Horiguchi wrote:

> Looks good to me.
> Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
>

Thanks!

> I have one comment below ...
>
> [snip]
>
> > @@ -1056,20 +1059,30 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
> > if (!page_mapped(hpage))
> > rc = move_to_new_page(new_hpage, hpage, 1, mode);
> >
> > - if (rc)
> > + if (rc != MIGRATEPAGE_SUCCESS)
> > remove_migration_ptes(hpage, hpage);
> >
> > if (anon_vma)
> > put_anon_vma(anon_vma);
> >
> > - if (!rc)
> > + if (rc == MIGRATEPAGE_SUCCESS)
> > hugetlb_cgroup_migrate(hpage, new_hpage);
> >
> > unlock_page(hpage);
> > out:
> > if (rc != -EAGAIN)
> > putback_active_hugepage(hpage);
> > - put_page(new_hpage);
> > +
> > + /*
> > + * If migration was not successful and there's a freeing callback, use
> > + * it. Otherwise, put_page() will drop the reference grabbed during
> > + * isolation.
> > + */
>
> This comment is true both for normal page and huge page, and people more likely
> to see unmap_and_move() at first, so this had better be (also) in unmap_and_move().
>

Ok!