Commit 6b7f864b authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe
Browse files

io_uring/net: get rid of io_notif_complete_tw_ext



io_notif_complete_tw_ext() can be removed and combined with
io_notif_complete_tw to make it simpler without sacrificing
anything.

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


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 99863292
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1018,8 +1018,11 @@ int io_send_zc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
		if (zc->flags & ~IO_ZC_FLAGS_VALID)
			return -EINVAL;
		if (zc->flags & IORING_SEND_ZC_REPORT_USAGE) {
			io_notif_set_extended(notif);
			io_notif_to_data(notif)->zc_report = true;
			struct io_notif_data *nd = io_notif_to_data(notif);

			nd->zc_report = true;
			nd->zc_used = false;
			nd->zc_copied = false;
		}
	}

@@ -1128,7 +1131,6 @@ static int io_send_zc_import(struct io_kiocb *req, struct io_async_msghdr *kmsg)
			return ret;
		kmsg->msg.sg_from_iter = io_sg_from_iter;
	} else {
		io_notif_set_extended(sr->notif);
		ret = import_ubuf(ITER_SOURCE, sr->buf, sr->len, &kmsg->msg.msg_iter);
		if (unlikely(ret))
			return ret;
@@ -1217,8 +1219,6 @@ int io_sendmsg_zc(struct io_kiocb *req, unsigned int issue_flags)
	unsigned flags;
	int ret, min_ret = 0;

	io_notif_set_extended(sr->notif);

	sock = sock_from_file(req->file);
	if (unlikely(!sock))
		return -ENOTSOCK;
+5 −13
Original line number Diff line number Diff line
@@ -9,12 +9,12 @@
#include "notif.h"
#include "rsrc.h"

static void io_notif_complete_tw_ext(struct io_kiocb *notif, struct io_tw_state *ts)
void io_notif_tw_complete(struct io_kiocb *notif, struct io_tw_state *ts)
{
	struct io_notif_data *nd = io_notif_to_data(notif);
	struct io_ring_ctx *ctx = notif->ctx;

	if (nd->zc_report && (nd->zc_copied || !nd->zc_used))
	if (unlikely(nd->zc_report) && (nd->zc_copied || !nd->zc_used))
		notif->cqe.res |= IORING_NOTIF_USAGE_ZC_COPIED;

	if (nd->account_pages && ctx->user) {
@@ -37,17 +37,10 @@ static void io_tx_ubuf_callback(struct sk_buff *skb, struct ubuf_info *uarg,
			WRITE_ONCE(nd->zc_copied, true);
	}

	if (refcount_dec_and_test(&uarg->refcnt))
	if (refcount_dec_and_test(&uarg->refcnt)) {
		notif->io_task_work.func = io_notif_tw_complete;
		__io_req_task_work_add(notif, IOU_F_TWQ_LAZY_WAKE);
	}

void io_notif_set_extended(struct io_kiocb *notif)
{
	struct io_notif_data *nd = io_notif_to_data(notif);

	nd->zc_used = false;
	nd->zc_copied = false;
	notif->io_task_work.func = io_notif_complete_tw_ext;
}

struct io_kiocb *io_alloc_notif(struct io_ring_ctx *ctx)
@@ -64,7 +57,6 @@ struct io_kiocb *io_alloc_notif(struct io_ring_ctx *ctx)
	notif->task = current;
	io_get_task_refs(1);
	notif->rsrc_node = NULL;
	notif->io_task_work.func = io_req_task_complete;

	nd = io_notif_to_data(notif);
	nd->zc_report = false;
+4 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ struct io_notif_data {
};

struct io_kiocb *io_alloc_notif(struct io_ring_ctx *ctx);
void io_notif_set_extended(struct io_kiocb *notif);
void io_notif_tw_complete(struct io_kiocb *notif, struct io_tw_state *ts);

static inline struct io_notif_data *io_notif_to_data(struct io_kiocb *notif)
{
@@ -33,9 +33,11 @@ static inline void io_notif_flush(struct io_kiocb *notif)
	struct io_notif_data *nd = io_notif_to_data(notif);

	/* drop slot's master ref */
	if (refcount_dec_and_test(&nd->uarg.refcnt))
	if (refcount_dec_and_test(&nd->uarg.refcnt)) {
		notif->io_task_work.func = io_notif_tw_complete;
		__io_req_task_work_add(notif, IOU_F_TWQ_LAZY_WAKE);
	}
}

static inline int io_notif_account_mem(struct io_kiocb *notif, unsigned len)
{