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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]