X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=mm%2Fmigrate.c;h=eb4267107d1fee9fa2a55e4076c014500e3b1edb;hb=94f2bb9b599f8d6a3a1309d39b3b219da314470c;hp=ee401e4e5ef187c92247d03dd6d2ea0893092d1c;hpb=91ef5ccd54a2f22b2593bb6e8c97fc26c74b7f30;p=linux-2.6-microblaze.git diff --git a/mm/migrate.c b/mm/migrate.c index ee401e4e5ef1..eb4267107d1f 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -880,7 +880,8 @@ static int __unmap_and_move(struct page *page, struct page *newpage, /* Establish migration ptes or remove ptes */ if (page_mapped(page)) { try_to_unmap(page, - TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS); + TTU_MIGRATION|TTU_IGNORE_MLOCK|TTU_IGNORE_ACCESS| + TTU_IGNORE_HWPOISON); page_was_mapped = 1; } @@ -950,7 +951,10 @@ out: list_del(&page->lru); dec_zone_page_state(page, NR_ISOLATED_ANON + page_is_file_cache(page)); - if (reason != MR_MEMORY_FAILURE) + /* Soft-offlined page shouldn't go through lru cache list */ + if (reason == MR_MEMORY_FAILURE) + put_page(page); + else putback_lru_page(page); }