diff --git a/include/spdk/trace.h b/include/spdk/trace.h index 3e6ebc707..8ba901292 100644 --- a/include/spdk/trace.h +++ b/include/spdk/trace.h @@ -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 { diff --git a/lib/nvme/nvme_pcie_common.c b/lib/nvme/nvme_pcie_common.c index 6acec919f..d8a2204a6 100644 --- a/lib/nvme/nvme_pcie_common.c +++ b/lib/nvme/nvme_pcie_common.c @@ -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 } } }, diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index e3f14e33b..1e2ec553a 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -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 } } }, diff --git a/lib/trace/Makefile b/lib/trace/Makefile index ed3e5c0fc..37e364eda 100644 --- a/lib/trace/Makefile +++ b/lib/trace/Makefile @@ -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 diff --git a/lib/trace_parser/Makefile b/lib/trace_parser/Makefile index a0a7834e9..d3e3aefd1 100644 --- a/lib/trace_parser/Makefile +++ b/lib/trace_parser/Makefile @@ -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 diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 27d83bc18..ab0bf937e 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -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); } diff --git a/scripts/bpf/trace.py b/scripts/bpf/trace.py index bf897a825..9b9bcd400 100755 --- a/scripts/bpf/trace.py +++ b/scripts/bpf/trace.py @@ -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