Re: [PATCH v2 2/7] mm/migrate: correct failure handling if !hugepage_migration_support()

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

 



On Tue, Dec 10, 2013 at 05:45:07PM +0900, Joonsoo Kim wrote:
>On Tue, Dec 10, 2013 at 10:17:56AM +0800, Wanpeng Li wrote:
>> Hi Joonsoo,
>> On Mon, Dec 09, 2013 at 06:10:43PM +0900, Joonsoo Kim wrote:
>> >We should remove the page from the list if we fail without ENOSYS,
>> >since migrate_pages() consider error cases except -ENOMEM and -EAGAIN
>> >as permanent failure and it assumes that the page would be removed from
>> >the list. Without this patch, we could overcount number of failure.
>> >
>> >In addition, we should put back the new hugepage if
>> >!hugepage_migration_support(). If not, we would leak hugepage memory.
>> >
>> >Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@xxxxxxx>
>> >
>> >diff --git a/mm/migrate.c b/mm/migrate.c
>> >index c6ac87a..b1cfd01 100644
>> >--- a/mm/migrate.c
>> >+++ b/mm/migrate.c
>> >@@ -1011,7 +1011,7 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
>> > {
>> > 	int rc = 0;
>> > 	int *result = NULL;
>> >-	struct page *new_hpage = get_new_page(hpage, private, &result);
>> >+	struct page *new_hpage;
>> > 	struct anon_vma *anon_vma = NULL;
>> >
>> > 	/*
>> >@@ -1021,9 +1021,12 @@ static int unmap_and_move_huge_page(new_page_t get_new_page,
>> > 	 * tables or check whether the hugepage is pmd-based or not before
>> > 	 * kicking migration.
>> > 	 */
>> >-	if (!hugepage_migration_support(page_hstate(hpage)))
>> >+	if (!hugepage_migration_support(page_hstate(hpage))) {
>> >+		putback_active_hugepage(hpage);
>> > 		return -ENOSYS;
>> 
>> The memory hotplug(do_migrate_range) and hwpoison(soft_offline_huge_page) callsets both 
>> will call putback_movable_pages/putback_active_hugepage for -ENOSYS case.
>
>Hello Wanpeng.
>
>Yes, those callsite handle error case, but error case handling should be done
>in unmap_and_move_huge_page(). It is mentioned on patch 1. If we defer to
>remove the pages from the list, nr_failed can be overcounted.
>

I see. 

Reviewed-by: Wanpeng Li <liwanp@xxxxxxxxxxxxxxxxxx>

>Thanks.

--
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]