aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSasha Levin <sasha.levin@oracle.com>2014-04-03 17:48:18 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-04-03 19:21:04 -0400
commit67f9fd91f93c582b7de2ab9325b6e179db77e4d5 (patch)
tree1e2c8ded9927cccbff491b721aedc0c6d303c164 /fs
parente9b71ca91aedb295097bd47066a06542751ecca8 (diff)
mm: remove read_cache_page_async()
This patch removes read_cache_page_async() which wasn't really needed anywhere and simplifies the code around it a bit. read_cache_page_async() is useful when we want to read a page into the cache without waiting for it to complete. This happens when the appropriate callback 'filler' doesn't complete its read operation and releases the page lock immediately, and instead queues a different completion routine to do that. This never actually happened anywhere in the code. read_cache_page_async() had 3 different callers: - read_cache_page() which is the sync version, it would just wait for the requested read to complete using wait_on_page_read(). - JFFS2 would call it from jffs2_gc_fetch_page(), but the filler function it supplied doesn't do any async reads, and would complete before the filler function returns - making it actually a sync read. - CRAMFS would call it using the read_mapping_page_async() wrapper, with a similar story to JFFS2 - the filler function doesn't do anything that reminds async reads and would always complete before the filler function returns. To sum it up, the code in mm/filemap.c never took advantage of having read_cache_page_async(). While there are filler callbacks that do async reads (such as the block one), we always called it with the read_cache_page(). This patch adds a mandatory wait for read to complete when adding a new page to the cache, and removes read_cache_page_async() and its wrappers. Signed-off-by: Sasha Levin <sasha.levin@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/cramfs/inode.c3
-rw-r--r--fs/jffs2/fs.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
index 06610cf94d57..a1f801c14fbc 100644
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -195,8 +195,7 @@ static void *cramfs_read(struct super_block *sb, unsigned int offset, unsigned i
195 struct page *page = NULL; 195 struct page *page = NULL;
196 196
197 if (blocknr + i < devsize) { 197 if (blocknr + i < devsize) {
198 page = read_mapping_page_async(mapping, blocknr + i, 198 page = read_mapping_page(mapping, blocknr + i, NULL);
199 NULL);
200 /* synchronous error? */ 199 /* synchronous error? */
201 if (IS_ERR(page)) 200 if (IS_ERR(page))
202 page = NULL; 201 page = NULL;
diff --git a/fs/jffs2/fs.c b/fs/jffs2/fs.c
index a012e16a8bb3..f73991522672 100644
--- a/fs/jffs2/fs.c
+++ b/fs/jffs2/fs.c
@@ -687,7 +687,7 @@ unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info *c,
687 struct inode *inode = OFNI_EDONI_2SFFJ(f); 687 struct inode *inode = OFNI_EDONI_2SFFJ(f);
688 struct page *pg; 688 struct page *pg;
689 689
690 pg = read_cache_page_async(inode->i_mapping, offset >> PAGE_CACHE_SHIFT, 690 pg = read_cache_page(inode->i_mapping, offset >> PAGE_CACHE_SHIFT,
691 (void *)jffs2_do_readpage_unlock, inode); 691 (void *)jffs2_do_readpage_unlock, inode);
692 if (IS_ERR(pg)) 692 if (IS_ERR(pg))
693 return (void *)pg; 693 return (void *)pg;