Index: linux-2.6.17-rc5-mm2/mm/migrate.c =================================================================== --- linux-2.6.17-rc5-mm2.orig/mm/migrate.c 2006-06-01 09:52:22.302988094 -0700 +++ linux-2.6.17-rc5-mm2/mm/migrate.c 2006-06-01 09:52:58.071282111 -0700 @@ -315,6 +315,17 @@ static int migrate_page_move_mapping(str } /* + * Make sure that we do not dirty pages for pages without + * migration functions. + */ + if (mapping->a_ops && !mapping->a_ops->migratepage) { + smp_rmb(); + if (PageDirty(page)) { + write_unlock_irq(&mapping->tree_lock); + return -EAGAIN; + } + } + /* * Now we know that no one else is looking at the page. */ get_page(newpage);