Revert recent changes to sync_page(). Now that page_mapping() returns &swapper_space for swapcache pages we don't need to test for PageSwapCache in sync_page(). --- 25-akpm/mm/filemap.c | 11 +++++------ 25-akpm/mm/swap_state.c | 1 + 2 files changed, 6 insertions(+), 6 deletions(-) diff -puN mm/filemap.c~sync_page-use-swapper-space mm/filemap.c --- 25/mm/filemap.c~sync_page-use-swapper-space 2004-05-15 18:28:04.165471296 -0700 +++ 25-akpm/mm/filemap.c 2004-05-15 18:28:04.171470384 -0700 @@ -121,14 +121,13 @@ static inline int sync_page(struct page { struct address_space *mapping; + /* + * FIXME, fercrissake. What is this barrier here for? + */ smp_mb(); mapping = page_mapping(page); - if (mapping) { - if (mapping->a_ops && mapping->a_ops->sync_page) - return mapping->a_ops->sync_page(page); - } else if (PageSwapCache(page)) { - swap_unplug_io_fn(NULL, page); - } + if (mapping && mapping->a_ops && mapping->a_ops->sync_page) + return mapping->a_ops->sync_page(page); return 0; } diff -puN mm/swap_state.c~sync_page-use-swapper-space mm/swap_state.c --- 25/mm/swap_state.c~sync_page-use-swapper-space 2004-05-15 18:28:04.166471144 -0700 +++ 25-akpm/mm/swap_state.c 2004-05-15 18:28:04.172470232 -0700 @@ -23,6 +23,7 @@ */ static struct address_space_operations swap_aops = { .writepage = swap_writepage, + .sync_page = block_sync_page, .set_page_dirty = __set_page_dirty_nobuffers, }; _