nvme/pcie, nvme/tcp: add cb_arg context tracepoint argument

This allows mapping an nvme_request back to the
nvme_bdev_io.

This requires bumping up the max number of arguments per
tracepoint.  5 was previously chosen as max since it
exactly fit in 64 bytes (1 cacheline) when all
arguments were stored as uint64_t, but now that we
support uint32_t arguments we can afford extra
arguments when some of them are uint32_t.  I've
bumped it to 8 so we can avoid having to touch
this value multiple times if we find some cases
where we need 7 or 8 args.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: Ie2ef5e59d10549860b47542e68c1c34efa63047f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13995
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jacek Kalwas <jacek.kalwas@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
Jim Harris 2022-08-10 22:29:42 +00:00 committed by Tomasz Zawadzki
parent 54f1603954
commit e36f0d363e
7 changed files with 20 additions and 12 deletions

View File

@ -62,7 +62,7 @@ struct spdk_trace_object {
#define SPDK_TRACE_ARG_TYPE_PTR 1
#define SPDK_TRACE_ARG_TYPE_STR 2
#define SPDK_TRACE_MAX_ARGS_COUNT 5
#define SPDK_TRACE_MAX_ARGS_COUNT 8
#define SPDK_TRACE_MAX_RELATIONS 16
struct spdk_trace_argument {

View File

@ -629,7 +629,7 @@ nvme_pcie_qpair_submit_tracker(struct spdk_nvme_qpair *qpair, struct nvme_tracke
req = tr->req;
assert(req != NULL);
spdk_trace_record(TRACE_NVME_PCIE_SUBMIT, qpair->id, 0, (uintptr_t)req,
spdk_trace_record(TRACE_NVME_PCIE_SUBMIT, qpair->id, 0, (uintptr_t)req, req->cb_arg,
(uint32_t)req->cmd.cid, (uint32_t)req->cmd.opc,
req->cmd.cdw10, req->cmd.cdw11, req->cmd.cdw12);
@ -676,7 +676,7 @@ nvme_pcie_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_trac
req = tr->req;
spdk_trace_record(TRACE_NVME_PCIE_COMPLETE, qpair->id, 0, (uintptr_t)req,
spdk_trace_record(TRACE_NVME_PCIE_COMPLETE, qpair->id, 0, (uintptr_t)req, req->cb_arg,
(uint32_t)req->cmd.cid, (uint32_t)cpl->status_raw);
assert(req != NULL);
@ -1818,7 +1818,8 @@ SPDK_TRACE_REGISTER_FN(nvme_pcie, "nvme_pcie", TRACE_GROUP_NVME_PCIE)
{
"NVME_PCIE_SUBMIT", TRACE_NVME_PCIE_SUBMIT,
OWNER_NVME_PCIE_QP, OBJECT_NVME_PCIE_REQ, 1,
{ { "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ { "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 },
{ "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ "opc", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ "dw10", SPDK_TRACE_ARG_TYPE_PTR, 4 },
{ "dw11", SPDK_TRACE_ARG_TYPE_PTR, 4 },
@ -1828,7 +1829,8 @@ SPDK_TRACE_REGISTER_FN(nvme_pcie, "nvme_pcie", TRACE_GROUP_NVME_PCIE)
{
"NVME_PCIE_COMPLETE", TRACE_NVME_PCIE_COMPLETE,
OWNER_NVME_PCIE_QP, OBJECT_NVME_PCIE_REQ, 0,
{ { "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ { "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 },
{ "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ "cpl", SPDK_TRACE_ARG_TYPE_PTR, 4 }
}
},

View File

@ -731,7 +731,7 @@ nvme_tcp_qpair_submit_request(struct spdk_nvme_qpair *qpair,
return -1;
}
spdk_trace_record(TRACE_NVME_TCP_SUBMIT, qpair->id, 0, (uintptr_t)req,
spdk_trace_record(TRACE_NVME_TCP_SUBMIT, qpair->id, 0, (uintptr_t)req, req->cb_arg,
(uint32_t)req->cmd.cid, (uint32_t)req->cmd.opc,
req->cmd.cdw10, req->cmd.cdw11, req->cmd.cdw12);
TAILQ_INSERT_TAIL(&tqpair->outstanding_reqs, tcp_req, link);
@ -777,7 +777,7 @@ nvme_tcp_req_complete(struct nvme_tcp_req *tcp_req,
spdk_nvme_qpair_print_completion(qpair, rsp);
}
spdk_trace_record(TRACE_NVME_TCP_COMPLETE, qpair->id, 0, (uintptr_t)req,
spdk_trace_record(TRACE_NVME_TCP_COMPLETE, qpair->id, 0, (uintptr_t)req, req->cb_arg,
(uint32_t)req->cmd.cid, (uint32_t)cpl.status_raw);
TAILQ_REMOVE(&tcp_req->tqpair->outstanding_reqs, tcp_req, link);
nvme_tcp_req_put(tqpair, tcp_req);
@ -2472,7 +2472,8 @@ SPDK_TRACE_REGISTER_FN(nvme_tcp, "nvme_tcp", TRACE_GROUP_NVME_TCP)
{
"NVME_TCP_SUBMIT", TRACE_NVME_TCP_SUBMIT,
OWNER_NVME_TCP_QP, OBJECT_NVME_TCP_REQ, 1,
{ { "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ { "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 },
{ "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ "opc", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ "dw10", SPDK_TRACE_ARG_TYPE_PTR, 4 },
{ "dw11", SPDK_TRACE_ARG_TYPE_PTR, 4 },
@ -2482,7 +2483,8 @@ SPDK_TRACE_REGISTER_FN(nvme_tcp, "nvme_tcp", TRACE_GROUP_NVME_TCP)
{
"NVME_TCP_COMPLETE", TRACE_NVME_TCP_COMPLETE,
OWNER_NVME_TCP_QP, OBJECT_NVME_TCP_REQ, 0,
{ { "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ { "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 },
{ "cid", SPDK_TRACE_ARG_TYPE_INT, 4 },
{ "cpl", SPDK_TRACE_ARG_TYPE_PTR, 4 }
}
},

View File

@ -6,7 +6,7 @@
SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
SO_VER := 6
SO_VER := 7
SO_MINOR := 0
C_SRCS = trace.c trace_flags.c trace_rpc.c

View File

@ -7,7 +7,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
SO_VER := 2
SO_VER := 3
SO_MINOR := 0
CXX_SRCS = trace.cpp

View File

@ -6781,4 +6781,8 @@ SPDK_TRACE_REGISTER_FN(bdev_nvme_trace, "bdev_nvme", TRACE_GROUP_BDEV_NVME)
spdk_trace_register_object(OBJECT_BDEV_NVME_IO, 'N');
spdk_trace_register_description_ext(opts, SPDK_COUNTOF(opts));
spdk_trace_tpoint_register_relation(TRACE_NVME_PCIE_SUBMIT, OBJECT_BDEV_NVME_IO, 0);
spdk_trace_tpoint_register_relation(TRACE_NVME_TCP_SUBMIT, OBJECT_BDEV_NVME_IO, 0);
spdk_trace_tpoint_register_relation(TRACE_NVME_PCIE_COMPLETE, OBJECT_BDEV_NVME_IO, 0);
spdk_trace_tpoint_register_relation(TRACE_NVME_TCP_COMPLETE, OBJECT_BDEV_NVME_IO, 0);
}

View File

@ -18,7 +18,7 @@ UCHAR_MAX = (1 << 8) - 1
TRACE_MAX_LCORE = 128
TRACE_MAX_GROUP_ID = 16
TRACE_MAX_TPOINT_ID = TRACE_MAX_GROUP_ID * 64
TRACE_MAX_ARGS_COUNT = 5
TRACE_MAX_ARGS_COUNT = 8
TRACE_MAX_RELATIONS = 16
TRACE_INVALID_OBJECT = (1 << 64) - 1
OBJECT_NONE = 0