|
|
@@ -849,8 +849,13 @@ int bio_add_page(struct bio *bio, struct page *page, unsigned int len,
|
|
|
unsigned int offset)
|
|
|
{
|
|
|
struct request_queue *q = bdev_get_queue(bio->bi_bdev);
|
|
|
+ unsigned int max_sectors;
|
|
|
|
|
|
- return __bio_add_page(q, bio, page, len, offset, blk_max_size_offset(q, bio->bi_iter.bi_sector));
|
|
|
+ max_sectors = blk_max_size_offset(q, bio->bi_iter.bi_sector);
|
|
|
+ if ((max_sectors < (len >> 9)) && !bio->bi_iter.bi_size)
|
|
|
+ max_sectors = len >> 9;
|
|
|
+
|
|
|
+ return __bio_add_page(q, bio, page, len, offset, max_sectors);
|
|
|
}
|
|
|
EXPORT_SYMBOL(bio_add_page);
|
|
|
|