Remove the last few SetPageLocked() instances. use trylock_page() instead of SetPageLocked() because we hold tree_lock so we cannot suffer the might_sleep(). Also at least add_to_page_cache() can be handed a locked page. Signed-off-by: Peter Zijlstra --- mm/filemap.c | 2 +- mm/swap_state.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/mm/filemap.c =================================================================== --- linux-2.6.orig/mm/filemap.c +++ linux-2.6/mm/filemap.c @@ -445,7 +445,7 @@ int add_to_page_cache(struct page *page, error = radix_tree_insert(&mapping->page_tree, offset, page); if (!error) { page_cache_get(page); - SetPageLocked(page); + trylock_page(page); page->mapping = mapping; page->index = offset; mapping->nrpages++; Index: linux-2.6/mm/swap_state.c =================================================================== --- linux-2.6.orig/mm/swap_state.c +++ linux-2.6/mm/swap_state.c @@ -83,7 +83,7 @@ static int __add_to_swap_cache(struct pa entry.val, page); if (!error) { page_cache_get(page); - SetPageLocked(page); + trylock_page(page); SetPageSwapCache(page); set_page_private(page, entry.val); total_swapcache_pages++; -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/