summaryrefslogtreecommitdiff
path: root/io_uring/notif.c
diff options
context:
space:
mode:
authorPavel Begunkov <asml.silence@gmail.com>2024-04-08 00:54:56 +0100
committerJens Axboe <axboe@kernel.dk>2024-04-15 08:10:26 -0600
commit6b7f864bb70591b1ba8f538c13de2a8396bfec8a (patch)
treed29bad983f41118383a1aae933809c0be3de81f8 /io_uring/notif.c
parent998632921d28a6d360d2a6d7ffcfbcf4f6f17fc2 (diff)
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: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/025a124a5e20e2474a57e2f04f16c422eb83063c.1712534031.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'io_uring/notif.c')
-rw-r--r--io_uring/notif.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/io_uring/notif.c b/io_uring/notif.c
index 47ff2da8c421..b561bd763435 100644
--- a/io_uring/notif.c
+++ b/io_uring/notif.c
@@ -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;