diff options
Diffstat (limited to 'fs/mpage.c')
-rw-r--r-- | fs/mpage.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/mpage.c b/fs/mpage.c index 552b80b3facc..16c3ef37eae3 100644 --- a/fs/mpage.c +++ b/fs/mpage.c | |||
@@ -241,7 +241,6 @@ do_mpage_readpage(struct bio *bio, struct page *page, unsigned nr_pages, | |||
241 | first_hole = page_block; | 241 | first_hole = page_block; |
242 | page_block++; | 242 | page_block++; |
243 | block_in_file++; | 243 | block_in_file++; |
244 | clear_buffer_mapped(map_bh); | ||
245 | continue; | 244 | continue; |
246 | } | 245 | } |
247 | 246 | ||
@@ -308,7 +307,10 @@ alloc_new: | |||
308 | goto alloc_new; | 307 | goto alloc_new; |
309 | } | 308 | } |
310 | 309 | ||
311 | if (buffer_boundary(map_bh) || (first_hole != blocks_per_page)) | 310 | relative_block = block_in_file - *first_logical_block; |
311 | nblocks = map_bh->b_size >> blkbits; | ||
312 | if ((buffer_boundary(map_bh) && relative_block == nblocks) || | ||
313 | (first_hole != blocks_per_page)) | ||
312 | bio = mpage_bio_submit(READ, bio); | 314 | bio = mpage_bio_submit(READ, bio); |
313 | else | 315 | else |
314 | *last_block_in_bio = blocks[blocks_per_page - 1]; | 316 | *last_block_in_bio = blocks[blocks_per_page - 1]; |