Loading include/trace/events/io_uring.h +29 −0 Original line number Diff line number Diff line Loading @@ -655,6 +655,35 @@ TRACE_EVENT(io_uring_short_write, __entry->wanted, __entry->got) ); /* * io_uring_local_work_run - ran ring local task work * * @tctx: pointer to a io_uring_ctx * @count: how many functions it ran * @loops: how many loops it ran * */ TRACE_EVENT(io_uring_local_work_run, TP_PROTO(void *ctx, int count, unsigned int loops), TP_ARGS(ctx, count, loops), TP_STRUCT__entry ( __field(void *, ctx ) __field(int, count ) __field(unsigned int, loops ) ), TP_fast_assign( __entry->ctx = ctx; __entry->count = count; __entry->loops = loops; ), TP_printk("ring %p, count %d, loops %u", __entry->ctx, __entry->count, __entry->loops) ); #endif /* _TRACE_IO_URING_H */ /* This part must be outside protection */ Loading io_uring/io_uring.c +3 −0 Original line number Diff line number Diff line Loading @@ -1168,6 +1168,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) struct llist_node fake; struct llist_node *current_final = NULL; int ret; unsigned int loops = 1; if (unlikely(ctx->submitter_task != current)) { /* maybe this is before any submissions */ Loading Loading @@ -1197,6 +1198,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) node = io_llist_cmpxchg(&ctx->work_llist, &fake, NULL); if (node != &fake) { loops++; current_final = &fake; node = io_llist_xchg(&ctx->work_llist, &fake); goto again; Loading @@ -1206,6 +1208,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) io_submit_flush_completions(ctx); mutex_unlock(&ctx->uring_lock); } trace_io_uring_local_work_run(ctx, ret, loops); return ret; } Loading Loading
include/trace/events/io_uring.h +29 −0 Original line number Diff line number Diff line Loading @@ -655,6 +655,35 @@ TRACE_EVENT(io_uring_short_write, __entry->wanted, __entry->got) ); /* * io_uring_local_work_run - ran ring local task work * * @tctx: pointer to a io_uring_ctx * @count: how many functions it ran * @loops: how many loops it ran * */ TRACE_EVENT(io_uring_local_work_run, TP_PROTO(void *ctx, int count, unsigned int loops), TP_ARGS(ctx, count, loops), TP_STRUCT__entry ( __field(void *, ctx ) __field(int, count ) __field(unsigned int, loops ) ), TP_fast_assign( __entry->ctx = ctx; __entry->count = count; __entry->loops = loops; ), TP_printk("ring %p, count %d, loops %u", __entry->ctx, __entry->count, __entry->loops) ); #endif /* _TRACE_IO_URING_H */ /* This part must be outside protection */ Loading
io_uring/io_uring.c +3 −0 Original line number Diff line number Diff line Loading @@ -1168,6 +1168,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) struct llist_node fake; struct llist_node *current_final = NULL; int ret; unsigned int loops = 1; if (unlikely(ctx->submitter_task != current)) { /* maybe this is before any submissions */ Loading Loading @@ -1197,6 +1198,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) node = io_llist_cmpxchg(&ctx->work_llist, &fake, NULL); if (node != &fake) { loops++; current_final = &fake; node = io_llist_xchg(&ctx->work_llist, &fake); goto again; Loading @@ -1206,6 +1208,7 @@ int io_run_local_work(struct io_ring_ctx *ctx) io_submit_flush_completions(ctx); mutex_unlock(&ctx->uring_lock); } trace_io_uring_local_work_run(ctx, ret, loops); return ret; } Loading