aboutsummaryrefslogtreecommitdiffstats
path: root/block/bio.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2021-05-08 21:49:48 -0600
committerJens Axboe <axboe@kernel.dk>2021-05-08 21:49:48 -0600
commit35c820e71565d1fa835b82499359218b219828ac (patch)
tree0a0552df281f125706f631fdd6aed0af7103908e /block/bio.c
parentcf7b39a0cbf6bf57aa07a008d46cf695add05b4c (diff)
downloadlinux-backports-35c820e71565d1fa835b82499359218b219828ac.tar.gz
linux-backports-35c820e71565d1fa835b82499359218b219828ac.tar.bz2
linux-backports-35c820e71565d1fa835b82499359218b219828ac.zip
Revert "bio: limit bio max size"
This reverts commit cd2c7545ae1beac3b6aae033c7f31193b3255946. Alex reports that the commit causes corruption with LUKS on ext4. Revert it for now so that this can be investigated properly. Link: https://lore.kernel.org/linux-block/1620493841.bxdq8r5haw.none@localhost/ Reported-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/bio.c')
-rw-r--r--block/bio.c13
1 files changed, 2 insertions, 11 deletions
diff --git a/block/bio.c b/block/bio.c
index 221dc56ba22f..44205dfb6b60 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -255,13 +255,6 @@ void bio_init(struct bio *bio, struct bio_vec *table,
}
EXPORT_SYMBOL(bio_init);
-unsigned int bio_max_size(struct bio *bio)
-{
- struct block_device *bdev = bio->bi_bdev;
-
- return bdev ? bdev->bd_disk->queue->limits.bio_max_bytes : UINT_MAX;
-}
-
/**
* bio_reset - reinitialize a bio
* @bio: bio to reset
@@ -873,7 +866,7 @@ bool __bio_try_merge_page(struct bio *bio, struct page *page,
struct bio_vec *bv = &bio->bi_io_vec[bio->bi_vcnt - 1];
if (page_is_mergeable(bv, page, len, off, same_page)) {
- if (bio->bi_iter.bi_size > bio_max_size(bio) - len) {
+ if (bio->bi_iter.bi_size > UINT_MAX - len) {
*same_page = false;
return false;
}
@@ -1002,7 +995,6 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
{
unsigned short nr_pages = bio->bi_max_vecs - bio->bi_vcnt;
unsigned short entries_left = bio->bi_max_vecs - bio->bi_vcnt;
- unsigned int bytes_left = bio_max_size(bio) - bio->bi_iter.bi_size;
struct bio_vec *bv = bio->bi_io_vec + bio->bi_vcnt;
struct page **pages = (struct page **)bv;
bool same_page = false;
@@ -1018,8 +1010,7 @@ static int __bio_iov_iter_get_pages(struct bio *bio, struct iov_iter *iter)
BUILD_BUG_ON(PAGE_PTRS_PER_BVEC < 2);
pages += entries_left * (PAGE_PTRS_PER_BVEC - 1);
- size = iov_iter_get_pages(iter, pages, bytes_left, nr_pages,
- &offset);
+ size = iov_iter_get_pages(iter, pages, LONG_MAX, nr_pages, &offset);
if (unlikely(size <= 0))
return size ? size : -EFAULT;