From 9d7af5669d99cd9e66280c48bc6a244919b221ee Mon Sep 17 00:00:00 2001 From: Krzysztof Karas Date: Tue, 14 Sep 2021 13:25:28 +0000 Subject: [PATCH] lib/bdev: add context to trace records in bdev.c Adds context to currently existing traces inside bdev.c file. These are going to be used later to match with traces from nvmf layer to enable io tracing. Change-Id: I599a60412f39144cdd306315a184b2000a61286e Signed-off-by: Krzysztof Karas Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9497 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki Reviewed-by: Konrad Sztyber --- lib/bdev/bdev.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index d73a96c6e..5274d7acf 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -2209,7 +2209,7 @@ bdev_io_split_submit(struct spdk_bdev_io *bdev_io, struct iovec *iov, int iovcnt } else { bdev_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED; if (bdev_io->u.bdev.split_outstanding == 0) { - spdk_trace_record(TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io); + spdk_trace_record(TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io, bdev_io->internal.caller_ctx); TAILQ_REMOVE(&bdev_io->internal.ch->io_submitted, bdev_io, internal.ch_link); bdev_io->internal.cb(bdev_io, false, bdev_io->internal.caller_ctx); } @@ -2324,7 +2324,7 @@ _bdev_rw_split(void *_bdev_io) if (bdev_io->u.bdev.split_outstanding == 0) { SPDK_ERRLOG("The first child io was less than a block size\n"); bdev_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED; - spdk_trace_record(TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io); + spdk_trace_record(TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io, bdev_io->internal.caller_ctx); TAILQ_REMOVE(&bdev_io->internal.ch->io_submitted, bdev_io, internal.ch_link); bdev_io->internal.cb(bdev_io, false, bdev_io->internal.caller_ctx); } @@ -2425,7 +2425,7 @@ bdev_io_split_done(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg) */ if (parent_io->u.bdev.split_remaining_num_blocks == 0) { assert(parent_io->internal.cb != bdev_io_split_done); - spdk_trace_record(TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)parent_io); + spdk_trace_record(TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)parent_io, bdev_io->internal.caller_ctx); TAILQ_REMOVE(&parent_io->internal.ch->io_submitted, parent_io, internal.ch_link); parent_io->internal.cb(parent_io, parent_io->internal.status == SPDK_BDEV_IO_STATUS_SUCCESS, parent_io->internal.caller_ctx); @@ -2511,7 +2511,8 @@ _bdev_io_submit(void *ctx) tsc = spdk_get_ticks(); bdev_io->internal.submit_tsc = tsc; - spdk_trace_record_tsc(tsc, TRACE_BDEV_IO_START, 0, 0, (uintptr_t)bdev_io, bdev_io->type); + spdk_trace_record_tsc(tsc, TRACE_BDEV_IO_START, 0, 0, (uintptr_t)bdev_io, bdev_io->type, + bdev_io->internal.caller_ctx); if (spdk_likely(bdev_ch->flags == 0)) { bdev_io_do_submit(bdev_ch, bdev_io); @@ -2617,7 +2618,7 @@ bdev_io_submit(struct spdk_bdev_io *bdev_io) if (bdev_io_should_split(bdev_io)) { bdev_io->internal.submit_tsc = spdk_get_ticks(); spdk_trace_record_tsc(bdev_io->internal.submit_tsc, TRACE_BDEV_IO_START, 0, 0, - (uintptr_t)bdev_io, bdev_io->type); + (uintptr_t)bdev_io, bdev_io->type, bdev_io->internal.caller_ctx); bdev_io_split(NULL, bdev_io); return; } @@ -5325,7 +5326,8 @@ bdev_io_complete(void *ctx) tsc = spdk_get_ticks(); tsc_diff = tsc - bdev_io->internal.submit_tsc; - spdk_trace_record_tsc(tsc, TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io); + spdk_trace_record_tsc(tsc, TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io, + bdev_io->internal.caller_ctx); TAILQ_REMOVE(&bdev_ch->io_submitted, bdev_io, internal.ch_link); @@ -7126,12 +7128,24 @@ SPDK_LOG_REGISTER_COMPONENT(bdev) SPDK_TRACE_REGISTER_FN(bdev_trace, "bdev", TRACE_GROUP_BDEV) { + struct spdk_trace_tpoint_opts opts[] = { + { + "BDEV_IO_START", TRACE_BDEV_IO_START, + OWNER_BDEV, OBJECT_BDEV_IO, 1, + { + { "type", SPDK_TRACE_ARG_TYPE_INT, 8 }, + { "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 } + } + }, + { + "BDEV_IO_DONE", TRACE_BDEV_IO_DONE, + OWNER_BDEV, OBJECT_BDEV_IO, 0, + {{ "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 }} + }, + }; + + spdk_trace_register_owner(OWNER_BDEV, 'b'); spdk_trace_register_object(OBJECT_BDEV_IO, 'i'); - spdk_trace_register_description("BDEV_IO_START", TRACE_BDEV_IO_START, OWNER_BDEV, - OBJECT_BDEV_IO, 1, - SPDK_TRACE_ARG_TYPE_INT, "type"); - spdk_trace_register_description("BDEV_IO_DONE", TRACE_BDEV_IO_DONE, OWNER_BDEV, - OBJECT_BDEV_IO, 0, - SPDK_TRACE_ARG_TYPE_INT, ""); + spdk_trace_register_description_ext(opts, SPDK_COUNTOF(opts)); }