The patch titled FS-Cache: Release page->private in failed readahead has been removed from the -mm tree. Its filename is fs-cache-release-page-private-in-failed-readahead.patch This patch was probably dropped from -mm because it has now been merged into a subsystem tree or into Linus's tree, or because it was folded into its parent patch in the -mm tree. From: David Howells <dhowells@xxxxxxxxxx> Cause read_cache_pages() to release page-private data on a page for which add_to_page_cache() fails or the filler function fails. This permits pages with caching references associated with them to be cleaned up. Signed-off-by: David Howells <dhowells@xxxxxxxxxx> Cc: Trond Myklebust <trond.myklebust@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- mm/readahead.c | 21 +++++++++++++++++++-- 1 files changed, 19 insertions(+), 2 deletions(-) diff -puN mm/readahead.c~fs-cache-release-page-private-in-failed-readahead mm/readahead.c --- devel/mm/readahead.c~fs-cache-release-page-private-in-failed-readahead 2006-05-12 11:37:04.000000000 -0700 +++ devel-akpm/mm/readahead.c 2006-05-12 11:37:04.000000000 -0700 @@ -14,6 +14,7 @@ #include <linux/blkdev.h> #include <linux/backing-dev.h> #include <linux/pagevec.h> +#include <linux/buffer_head.h> void default_unplug_io_fn(struct backing_dev_info *bdi, struct page *page) { @@ -118,6 +119,22 @@ static inline unsigned long get_next_ra_ #define list_to_page(head) (list_entry((head)->prev, struct page, lru)) +/* + * see if a page needs releasing upon read_cache_pages() failure + */ +static inline void read_cache_pages_release_page(struct address_space *mapping, + struct page *page) +{ + if (PagePrivate(page)) { + page->mapping = mapping; + SetPageLocked(page); + try_to_release_page(page, GFP_KERNEL); + page->mapping = NULL; + } + + page_cache_release(page); +} + /** * read_cache_pages - populate an address space with some pages, and * start reads against them. @@ -142,7 +159,7 @@ int read_cache_pages(struct address_spac page = list_to_page(pages); list_del(&page->lru); if (add_to_page_cache(page, mapping, page->index, GFP_KERNEL)) { - page_cache_release(page); + read_cache_pages_release_page(mapping, page); continue; } ret = filler(data, page); @@ -154,7 +171,7 @@ int read_cache_pages(struct address_spac victim = list_to_page(pages); list_del(&victim->lru); - page_cache_release(victim); + read_cache_pages_release_page(mapping, victim); } break; } _ Patches currently in -mm which might be from dhowells@xxxxxxxxxx are fix-can_share_swap_page-when-config_swap.patch fix-typos-in-documentation-memory-barrierstxt.patch fs-cache-release-page-private-in-failed-readahead.patch fs-cache-release-page-private-in-failed-readahead-uninlining.patch fs-cache-release-page-private-in-failed-readahead-uninlining-2.patch nfs-use-local-caching.patch nfs-use-local-caching-fix.patch fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch net-rxrpc-use-list_move.patch fs-use-list_move.patch ecryptfs-main-module-functions-vs-nfs-permit-filesystem-to-override-root-dentry-on-mount.patch reiser4-vs-nfs-permit-filesystem-to-override-root-dentry-on-mount.patch reiser4-vs-nfs-permit-filesystem-to-perform-statfs-with-a-known-root-dentry.patch mutex-subsystem-synchro-test-module.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html