Hi Andrew, Can you put the following in -mm please? I cc'ed Hans about it earlier. Basically, resier4 does not present a good reason why pagecache should be dropped here. Basically the exact same operations are performed by releasepage callers (reclaim or truncate). If there is some atomicity problem, the code removed here wouldn't solve it anyway.
And unless reiser4 performs some of its own special synchronisation, I can't see how it gets the pagecache removal sequence right for the reclaim case (ie. careful checks of page_count and PageDirty under tree_lock). With this patch in place, reiser4-reget-page-mapping.patch can go. I would also be worried about exporting remove_from_page_cache... at least the __ variant can stop being exported now. -- Index: linux-2.6/fs/reiser4/as_ops.c =================================================================== --- linux-2.6.orig/fs/reiser4/as_ops.c +++ linux-2.6/fs/reiser4/as_ops.c @@ -358,11 +358,6 @@ int reiser4_releasepage(struct page *pag assert("reiser4-4", page->mapping != NULL); assert("reiser4-5", page->mapping->host != NULL); - /* is_page_cache_freeable() check - (mapping + private + page_cache_get() by shrink_cache()) */ - if (page_count(page) > 3) - return 0; - if (PageDirty(page)) return 0; @@ -385,14 +380,6 @@ int reiser4_releasepage(struct page *pag /* we are under memory pressure so release jnode also. */ jput(node); - write_lock_irq(&mapping->tree_lock); - /* shrink_list() + radix-tree */ - if (page_count(page) == 2) { - __remove_from_page_cache(page); - atomic_dec(&page->_count); - } - write_unlock_irq(&mapping->tree_lock); - return 1; } else { spin_unlock(&(node->load));