diff options
author | Jeff Moyer <jmoyer@redhat.com> | 2009-04-22 08:08:13 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-04-28 01:37:33 -0400 |
commit | db2dbb12dc47a50c7a4c5678f526014063e486f6 (patch) | |
tree | 8bfa3fe41e674f584eb37a7767c008d609b41d75 /fs | |
parent | db29a6b49674085f136331014ba0eee249c16a2c (diff) |
block: implement blkdev_readpages
Doing a proper block dev ->readpages() speeds up the crazy dump(8)
approach of using interleaved process IO.
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/block_dev.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index f45dbc18dd17..a85fe310fc6f 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c | |||
@@ -331,6 +331,12 @@ static int blkdev_readpage(struct file * file, struct page * page) | |||
331 | return block_read_full_page(page, blkdev_get_block); | 331 | return block_read_full_page(page, blkdev_get_block); |
332 | } | 332 | } |
333 | 333 | ||
334 | static int blkdev_readpages(struct file *file, struct address_space *mapping, | ||
335 | struct list_head *pages, unsigned nr_pages) | ||
336 | { | ||
337 | return mpage_readpages(mapping, pages, nr_pages, blkdev_get_block); | ||
338 | } | ||
339 | |||
334 | static int blkdev_write_begin(struct file *file, struct address_space *mapping, | 340 | static int blkdev_write_begin(struct file *file, struct address_space *mapping, |
335 | loff_t pos, unsigned len, unsigned flags, | 341 | loff_t pos, unsigned len, unsigned flags, |
336 | struct page **pagep, void **fsdata) | 342 | struct page **pagep, void **fsdata) |
@@ -1399,6 +1405,7 @@ static int blkdev_releasepage(struct page *page, gfp_t wait) | |||
1399 | 1405 | ||
1400 | static const struct address_space_operations def_blk_aops = { | 1406 | static const struct address_space_operations def_blk_aops = { |
1401 | .readpage = blkdev_readpage, | 1407 | .readpage = blkdev_readpage, |
1408 | .readpages = blkdev_readpages, | ||
1402 | .writepage = blkdev_writepage, | 1409 | .writepage = blkdev_writepage, |
1403 | .sync_page = block_sync_page, | 1410 | .sync_page = block_sync_page, |
1404 | .write_begin = blkdev_write_begin, | 1411 | .write_begin = blkdev_write_begin, |