Commit 506aa235 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

block: move bio_iov_iter_get_bdev_pages to block/fops.c



Keep bio_iov_iter_get_bdev_pages local with the callers, as blindly
looking at the bdev logical block size is often not the best idea
unless on a block device.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarKeith Busch <kbusch@kernel.org>
Reviewed-by: default avatarQu Wenruo <wqu@suse.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent cb6d51a4
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -43,6 +43,13 @@ static bool blkdev_dio_invalid(struct block_device *bdev, struct kiocb *iocb,
			(bdev_logical_block_size(bdev) - 1);
}

static inline int blkdev_iov_iter_get_pages(struct bio *bio,
		struct iov_iter *iter, struct block_device *bdev)
{
	return bio_iov_iter_get_pages(bio, iter,
			bdev_logical_block_size(bdev) - 1);
}

#define DIO_INLINE_BIO_VECS 4

static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb,
@@ -78,7 +85,7 @@ static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb,
	if (iocb->ki_flags & IOCB_ATOMIC)
		bio.bi_opf |= REQ_ATOMIC;

	ret = bio_iov_iter_get_bdev_pages(&bio, iter, bdev);
	ret = blkdev_iov_iter_get_pages(&bio, iter, bdev);
	if (unlikely(ret))
		goto out;
	ret = bio.bi_iter.bi_size;
@@ -212,7 +219,7 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
		bio->bi_end_io = blkdev_bio_end_io;
		bio->bi_ioprio = iocb->ki_ioprio;

		ret = bio_iov_iter_get_bdev_pages(bio, iter, bdev);
		ret = blkdev_iov_iter_get_pages(bio, iter, bdev);
		if (unlikely(ret)) {
			bio->bi_status = BLK_STS_IOERR;
			bio_endio(bio);
@@ -348,7 +355,7 @@ static ssize_t __blkdev_direct_IO_async(struct kiocb *iocb,
		 */
		bio_iov_bvec_set(bio, iter);
	} else {
		ret = bio_iov_iter_get_bdev_pages(bio, iter, bdev);
		ret = blkdev_iov_iter_get_pages(bio, iter, bdev);
		if (unlikely(ret))
			goto out_bio_put;
	}
+0 −7
Original line number Diff line number Diff line
@@ -1873,13 +1873,6 @@ static inline int bio_split_rw_at(struct bio *bio,
	return bio_split_io_at(bio, lim, segs, max_bytes, lim->dma_alignment);
}

static inline int bio_iov_iter_get_bdev_pages(struct bio *bio,
		struct iov_iter *iter, struct block_device *bdev)
{
	return bio_iov_iter_get_pages(bio, iter,
					bdev_logical_block_size(bdev) - 1);
}

#define DEFINE_IO_COMP_BATCH(name)	struct io_comp_batch name = { }

#endif /* _LINUX_BLKDEV_H */