do_mpage_readpage(): don't submit lots of small bios on boundary
[linux-block.git] / fs / mpage.c
index 552b80b3facc01414967771ec6d59d9029276cdb..46e977efd50a6ad11c65821f8cf3becbfad916fb 100644 (file)
@@ -308,7 +308,10 @@ alloc_new:
                goto alloc_new;
        }
 
-       if (buffer_boundary(map_bh) || (first_hole != blocks_per_page))
+       relative_block = block_in_file - *first_logical_block;
+       nblocks = map_bh->b_size >> blkbits;
+       if ((buffer_boundary(map_bh) && relative_block == nblocks) ||
+           (first_hole != blocks_per_page))
                bio = mpage_bio_submit(READ, bio);
        else
                *last_block_in_bio = blocks[blocks_per_page - 1];