mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-29 09:12:07 +00:00
io_uring: Add tracepoint for short writes
This adds the io_uring_short_write tracepoint to io_uring. A short write is issued if not all pages that are required for a write are in the page cache and the async buffered writes have to return EAGAIN. Signed-off-by: Stefan Roesch <shr@fb.com> Link: https://lore.kernel.org/r/20220616212221.2024518-13-shr@fb.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e053aaf4da
commit
1c849b481b
@ -630,6 +630,31 @@ TRACE_EVENT(io_uring_task_work_run,
|
||||
__entry->tctx, __entry->count, __entry->loops)
|
||||
);
|
||||
|
||||
TRACE_EVENT(io_uring_short_write,
|
||||
|
||||
TP_PROTO(void *ctx, u64 fpos, u64 wanted, u64 got),
|
||||
|
||||
TP_ARGS(ctx, fpos, wanted, got),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(void *, ctx)
|
||||
__field(u64, fpos)
|
||||
__field(u64, wanted)
|
||||
__field(u64, got)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->ctx = ctx;
|
||||
__entry->fpos = fpos;
|
||||
__entry->wanted = wanted;
|
||||
__entry->got = got;
|
||||
),
|
||||
|
||||
TP_printk("ring %p, fpos %lld, wanted %lld, got %lld",
|
||||
__entry->ctx, __entry->fpos,
|
||||
__entry->wanted, __entry->got)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_IO_URING_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
@ -933,6 +933,9 @@ int io_write(struct io_kiocb *req, unsigned int issue_flags)
|
||||
if (ret2 != req->cqe.res && ret2 >= 0 && need_complete_io(req)) {
|
||||
struct io_async_rw *rw;
|
||||
|
||||
trace_io_uring_short_write(req->ctx, kiocb->ki_pos - ret2,
|
||||
req->cqe.res, ret2);
|
||||
|
||||
/* This is a partial write. The file pos has already been
|
||||
* updated, setup the async struct to complete the request
|
||||
* in the worker. Also update bytes_done to account for
|
||||
|
Loading…
Reference in New Issue
Block a user