diff options
author | Namjae Jeon <linkinjeon@gmail.com> | 2011-11-02 16:38:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-02 19:06:59 -0400 |
commit | 3069083cc8def2ffad8520f0f24c6f95f140aac5 (patch) | |
tree | 226fddfdb3ad4f170809fd44f167a02a360f2ea2 /fs/isofs/inode.c | |
parent | b6eb48d02dc73d19bebc396a9e92dd64a65d3199 (diff) |
isofs: add readpages support
Use mpage_readpages() instead of multiple calls to isofs_readpage() to
reduce the CPU utilization and make performance higher.
Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Jan Kara <jack@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/isofs/inode.c')
-rw-r--r-- | fs/isofs/inode.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c index a5d03672d04e..46844ff39d61 100644 --- a/fs/isofs/inode.c +++ b/fs/isofs/inode.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/statfs.h> | 20 | #include <linux/statfs.h> |
21 | #include <linux/cdrom.h> | 21 | #include <linux/cdrom.h> |
22 | #include <linux/parser.h> | 22 | #include <linux/parser.h> |
23 | #include <linux/mpage.h> | ||
23 | 24 | ||
24 | #include "isofs.h" | 25 | #include "isofs.h" |
25 | #include "zisofs.h" | 26 | #include "zisofs.h" |
@@ -1148,7 +1149,13 @@ struct buffer_head *isofs_bread(struct inode *inode, sector_t block) | |||
1148 | 1149 | ||
1149 | static int isofs_readpage(struct file *file, struct page *page) | 1150 | static int isofs_readpage(struct file *file, struct page *page) |
1150 | { | 1151 | { |
1151 | return block_read_full_page(page,isofs_get_block); | 1152 | return mpage_readpage(page, isofs_get_block); |
1153 | } | ||
1154 | |||
1155 | static int isofs_readpages(struct file *file, struct address_space *mapping, | ||
1156 | struct list_head *pages, unsigned nr_pages) | ||
1157 | { | ||
1158 | return mpage_readpages(mapping, pages, nr_pages, isofs_get_block); | ||
1152 | } | 1159 | } |
1153 | 1160 | ||
1154 | static sector_t _isofs_bmap(struct address_space *mapping, sector_t block) | 1161 | static sector_t _isofs_bmap(struct address_space *mapping, sector_t block) |
@@ -1158,6 +1165,7 @@ static sector_t _isofs_bmap(struct address_space *mapping, sector_t block) | |||
1158 | 1165 | ||
1159 | static const struct address_space_operations isofs_aops = { | 1166 | static const struct address_space_operations isofs_aops = { |
1160 | .readpage = isofs_readpage, | 1167 | .readpage = isofs_readpage, |
1168 | .readpages = isofs_readpages, | ||
1161 | .bmap = _isofs_bmap | 1169 | .bmap = _isofs_bmap |
1162 | }; | 1170 | }; |
1163 | 1171 | ||