Index: linux-2.6.17-rc5-mm1/mm/migrate.c =================================================================== --- linux-2.6.17-rc5-mm1.orig/mm/migrate.c 2006-05-30 09:13:31.336267540 -0700 +++ linux-2.6.17-rc5-mm1/mm/migrate.c 2006-05-30 14:28:27.202328822 -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);