Commit 25d207dc authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe
Browse files

block: kill unused polling bits in __blkdev_direct_IO()



With addition of __blkdev_direct_IO_async(), __blkdev_direct_IO() now
serves only multio-bio I/O, which we don't poll. Now we can remove
anything related to I/O polling from it.

Signed-off-by: default avatarPavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/b8c597a6b7ee612df394853bfd24726aee5b898e.1635337135.git.asml.silence@gmail.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 1bb6b810
Loading
Loading
Loading
Loading
+3 −17
Original line number Diff line number Diff line
@@ -190,7 +190,6 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
	struct blk_plug plug;
	struct blkdev_dio *dio;
	struct bio *bio;
	bool do_poll = (iocb->ki_flags & IOCB_HIPRI);
	bool is_read = (iov_iter_rw(iter) == READ), is_sync;
	loff_t pos = iocb->ki_pos;
	int ret = 0;
@@ -216,11 +215,6 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
	if (is_read && iter_is_iovec(iter))
		dio->flags |= DIO_SHOULD_DIRTY;

	/*
	 * Don't plug for HIPRI/polled IO, as those should go straight
	 * to issue
	 */
	if (!(iocb->ki_flags & IOCB_HIPRI))
	blk_start_plug(&plug);

	for (;;) {
@@ -254,11 +248,7 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,

		nr_pages = bio_iov_vecs_to_alloc(iter, BIO_MAX_VECS);
		if (!nr_pages) {
			if (do_poll)
				bio_set_polled(bio, iocb);
			submit_bio(bio);
			if (do_poll)
				WRITE_ONCE(iocb->private, bio);
			break;
		}
		if (!(dio->flags & DIO_MULTI_BIO)) {
@@ -271,7 +261,6 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
				bio_get(bio);
			dio->flags |= DIO_MULTI_BIO;
			atomic_set(&dio->ref, 2);
			do_poll = false;
		} else {
			atomic_inc(&dio->ref);
		}
@@ -280,7 +269,6 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
		bio = bio_alloc(GFP_KERNEL, nr_pages);
	}

	if (!(iocb->ki_flags & IOCB_HIPRI))
	blk_finish_plug(&plug);

	if (!is_sync)
@@ -290,8 +278,6 @@ static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
		set_current_state(TASK_UNINTERRUPTIBLE);
		if (!READ_ONCE(dio->waiter))
			break;

		if (!do_poll || !bio_poll(bio, NULL, 0))
		blk_io_schedule();
	}
	__set_current_state(TASK_RUNNING);