Hi, Bugfix against P10-migrate-rollback.patch The patch is against 2.6.10-rc1-mm2-mhp1 . When unwinding has occurred, don't overwrite page->mapping with newpage->mapping if it's in the swapcache. page->mapping should keep the old value to be rolled back, or some problems may happen. Signed-off-by: Hirokazu Takahashi Signed-off-by: Dave Hansen --- memhotplug-dave/mm/mmigrate.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN mm/mmigrate.c~AA-PM-10.1-page-mapping_should_keep_the_old_value_to_be_rolled_back mm/mmigrate.c --- memhotplug/mm/mmigrate.c~AA-PM-10.1-page-mapping_should_keep_the_old_value_to_be_rolled_back 2005-07-28 13:50:39.000000000 -0700 +++ memhotplug-dave/mm/mmigrate.c 2005-07-28 13:50:39.000000000 -0700 @@ -183,11 +183,11 @@ rewind_page(struct page *page, struct pa */ read_lock_irq(&mapping->tree_lock); page->index = newpage->index; - page->mapping = newpage->mapping; if (PageSwapCache(newpage)) { SetPageSwapCache(page); page->private = newpage->private; - } + } else + page->mapping = newpage->mapping; if (radix_tree_replace(&mapping->page_tree, page_index(newpage), page) == NULL) { printk(KERN_ERR "%s(): newpage:%p has gone. We can't roll back page:%p.\n", __FUNCTION__, newpage, page); BUG(); _