From: Martin Schwidefsky Ok, its just the revert of the page_cache_release delta. --- mm/rmap.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) diff -puN mm/rmap.c~s390-14-rmap-optimisation-2 mm/rmap.c --- 25/mm/rmap.c~s390-14-rmap-optimisation-2 2004-01-09 11:03:25.000000000 -0800 +++ 25-akpm/mm/rmap.c 2004-01-09 11:03:25.000000000 -0800 @@ -361,6 +361,7 @@ static int try_to_unmap_one(struct page set_page_dirty(page); mm->rss--; + page_cache_release(page); ret = SWAP_SUCCESS; out_unlock: @@ -401,7 +402,6 @@ int try_to_unmap(struct page * page) if (ret == SWAP_SUCCESS) { if (page_test_and_clear_dirty(page)) set_page_dirty(page); - page_cache_release(page); page->pte.direct = 0; ClearPageDirect(page); } @@ -441,7 +441,6 @@ int try_to_unmap(struct page * page) if (page->pte.direct == 0 && page_test_and_clear_dirty(page)) set_page_dirty(page); - page_cache_release(page); break; case SWAP_AGAIN: /* Skip this pte, remembering status. */ _