- fs-cache-release-page-private-in-failed-readahead.patch removed from -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Kernel Newbies FAQ]     [Kernel Archive]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Photo]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]

  Powered by Linux