Hi David, On Wed, Apr 30, 2014 at 05:45:24PM -0700, David Rientjes wrote: > Memory migration uses a callback defined by the caller to determine how to > allocate destination pages. When migration fails for a source page, however, it > frees the destination page back to the system. > > This patch adds a memory migration callback defined by the caller to determine > how to free destination pages. If a caller, such as memory compaction, builds > its own freelist for migration targets, this can reuse already freed memory > instead of scanning additional memory. > > If the caller provides a function to handle freeing of destination pages, it is > called when page migration fails. Otherwise, it may pass NULL and freeing back > to the system will be handled as usual. This patch introduces no functional > change. > > Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx> Looks good to me. Reviewed-by: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> 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(). Thanks, Naoya Horiguchi -- 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>