Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8358e3a8 authored by Jens Axboe's avatar Jens Axboe
Browse files

io_uring: remove 'state' argument from io_{read,write} path



Since commit 09bb8394 we don't use the state argument for any sort
of on-stack caching in the io read and write path. Remove the stale
and unused argument from them, and bubble it up to __io_submit_sqe()
and down to io_prep_rw().

Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent fb775faa
Loading
Loading
Loading
Loading
+12 −13
Original line number Diff line number Diff line
@@ -740,7 +740,7 @@ static bool io_file_supports_async(struct file *file)
}

static int io_prep_rw(struct io_kiocb *req, const struct sqe_submit *s,
		      bool force_nonblock, struct io_submit_state *state)
		      bool force_nonblock)
{
	const struct io_uring_sqe *sqe = s->sqe;
	struct io_ring_ctx *ctx = req->ctx;
@@ -938,7 +938,7 @@ static void io_async_list_note(int rw, struct io_kiocb *req, size_t len)
}

static int io_read(struct io_kiocb *req, const struct sqe_submit *s,
		   bool force_nonblock, struct io_submit_state *state)
		   bool force_nonblock)
{
	struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
	struct kiocb *kiocb = &req->rw;
@@ -947,7 +947,7 @@ static int io_read(struct io_kiocb *req, const struct sqe_submit *s,
	size_t iov_count;
	int ret;

	ret = io_prep_rw(req, s, force_nonblock, state);
	ret = io_prep_rw(req, s, force_nonblock);
	if (ret)
		return ret;
	file = kiocb->ki_filp;
@@ -985,7 +985,7 @@ static int io_read(struct io_kiocb *req, const struct sqe_submit *s,
}

static int io_write(struct io_kiocb *req, const struct sqe_submit *s,
		    bool force_nonblock, struct io_submit_state *state)
		    bool force_nonblock)
{
	struct iovec inline_vecs[UIO_FASTIOV], *iovec = inline_vecs;
	struct kiocb *kiocb = &req->rw;
@@ -994,7 +994,7 @@ static int io_write(struct io_kiocb *req, const struct sqe_submit *s,
	size_t iov_count;
	int ret;

	ret = io_prep_rw(req, s, force_nonblock, state);
	ret = io_prep_rw(req, s, force_nonblock);
	if (ret)
		return ret;

@@ -1336,8 +1336,7 @@ static int io_poll_add(struct io_kiocb *req, const struct io_uring_sqe *sqe)
}

static int __io_submit_sqe(struct io_ring_ctx *ctx, struct io_kiocb *req,
			   const struct sqe_submit *s, bool force_nonblock,
			   struct io_submit_state *state)
			   const struct sqe_submit *s, bool force_nonblock)
{
	int ret, opcode;

@@ -1353,18 +1352,18 @@ static int __io_submit_sqe(struct io_ring_ctx *ctx, struct io_kiocb *req,
	case IORING_OP_READV:
		if (unlikely(s->sqe->buf_index))
			return -EINVAL;
		ret = io_read(req, s, force_nonblock, state);
		ret = io_read(req, s, force_nonblock);
		break;
	case IORING_OP_WRITEV:
		if (unlikely(s->sqe->buf_index))
			return -EINVAL;
		ret = io_write(req, s, force_nonblock, state);
		ret = io_write(req, s, force_nonblock);
		break;
	case IORING_OP_READ_FIXED:
		ret = io_read(req, s, force_nonblock, state);
		ret = io_read(req, s, force_nonblock);
		break;
	case IORING_OP_WRITE_FIXED:
		ret = io_write(req, s, force_nonblock, state);
		ret = io_write(req, s, force_nonblock);
		break;
	case IORING_OP_FSYNC:
		ret = io_fsync(req, s->sqe, force_nonblock);
@@ -1457,7 +1456,7 @@ static void io_sq_wq_submit_work(struct work_struct *work)
			s->has_user = cur_mm != NULL;
			s->needs_lock = true;
			do {
				ret = __io_submit_sqe(ctx, req, s, false, NULL);
				ret = __io_submit_sqe(ctx, req, s, false);
				/*
				 * We can get EAGAIN for polled IO even though
				 * we're forcing a sync submission from here,
@@ -1623,7 +1622,7 @@ static int io_submit_sqe(struct io_ring_ctx *ctx, struct sqe_submit *s,
	if (unlikely(ret))
		goto out;

	ret = __io_submit_sqe(ctx, req, s, true, state);
	ret = __io_submit_sqe(ctx, req, s, true);
	if (ret == -EAGAIN) {
		struct io_uring_sqe *sqe_copy;