bdev/nvme: add tracepoint support
This will allow us to map spdk_bdev_io events to nvme_request events coming in a future patch. Since we pass the nvme_bdev_io to the nvme driver (not the spdk_bdev_io), we need to add tracepoints for the nvme_bdev_io so that spdk_trace can do the spdk_bdev_io->nvme_bdev_io->nvme_request mapping. An alternative would have been to pass the spdk_bdev_io as the cb_arg to the nvme driver, but that change seemed to invasive, and I think we will find other uses for the nvme_bdev_io events anyways. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Id7519e689b01875093359f41a1ca2af912061a8b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13994 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Reviewed-by: Jacek Kalwas <jacek.kalwas@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
8bc1165edd
commit
54f1603954
@ -21,6 +21,7 @@
|
||||
#define OBJECT_BDEV_IO 0x2
|
||||
#define OBJECT_NVME_PCIE_REQ 0x3
|
||||
#define OBJECT_NVME_TCP_REQ 0x4
|
||||
#define OBJECT_BDEV_NVME_IO 0x5
|
||||
#define OBJECT_SCSI_TASK 0x10
|
||||
#define OBJECT_NVMF_RDMA_IO 0x40
|
||||
#define OBJECT_NVMF_TCP_IO 0x80
|
||||
@ -40,6 +41,7 @@
|
||||
#define TRACE_GROUP_NVME_PCIE 0xB
|
||||
#define TRACE_GROUP_ACCEL_IAA 0xC
|
||||
#define TRACE_GROUP_NVME_TCP 0xD
|
||||
#define TRACE_GROUP_BDEV_NVME 0xE
|
||||
|
||||
/* Bdev tracepoint definitions */
|
||||
#define TRACE_BDEV_IO_START SPDK_TPOINT_ID(TRACE_GROUP_BDEV, 0x0)
|
||||
@ -151,4 +153,8 @@
|
||||
#define TRACE_NVME_TCP_SUBMIT SPDK_TPOINT_ID(TRACE_GROUP_NVME_TCP, 0x0)
|
||||
#define TRACE_NVME_TCP_COMPLETE SPDK_TPOINT_ID(TRACE_GROUP_NVME_TCP, 0x1)
|
||||
|
||||
/* Bdev nvme tracepoint definitions */
|
||||
#define TRACE_BDEV_NVME_IO_START SPDK_TPOINT_ID(TRACE_GROUP_BDEV_NVME, 0x0)
|
||||
#define TRACE_BDEV_NVME_IO_DONE SPDK_TPOINT_ID(TRACE_GROUP_BDEV_NVME, 0x1)
|
||||
|
||||
#endif /* SPDK_INTERNAL_TRACE_DEFS */
|
||||
|
@ -7768,4 +7768,6 @@ SPDK_TRACE_REGISTER_FN(bdev_trace, "bdev", TRACE_GROUP_BDEV)
|
||||
spdk_trace_register_owner(OWNER_BDEV, 'b');
|
||||
spdk_trace_register_object(OBJECT_BDEV_IO, 'i');
|
||||
spdk_trace_register_description_ext(opts, SPDK_COUNTOF(opts));
|
||||
spdk_trace_tpoint_register_relation(TRACE_BDEV_NVME_IO_START, OBJECT_BDEV_IO, 0);
|
||||
spdk_trace_tpoint_register_relation(TRACE_BDEV_NVME_IO_DONE, OBJECT_BDEV_IO, 0);
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ DEPDIRS-bdev_delay := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_iscsi := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_malloc := $(BDEV_DEPS_THREAD) accel
|
||||
DEPDIRS-bdev_null := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_nvme = $(BDEV_DEPS_THREAD) accel nvme
|
||||
DEPDIRS-bdev_nvme = $(BDEV_DEPS_THREAD) accel nvme trace
|
||||
DEPDIRS-bdev_ocf := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_passthru := $(BDEV_DEPS_THREAD)
|
||||
DEPDIRS-bdev_pmem := $(BDEV_DEPS_THREAD)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "spdk/nvme_zns.h"
|
||||
#include "spdk/opal.h"
|
||||
#include "spdk/thread.h"
|
||||
#include "spdk/trace.h"
|
||||
#include "spdk/string.h"
|
||||
#include "spdk/util.h"
|
||||
|
||||
@ -26,6 +27,7 @@
|
||||
#include "spdk/log.h"
|
||||
|
||||
#include "spdk_internal/usdt.h"
|
||||
#include "spdk_internal/trace_defs.h"
|
||||
|
||||
#define SPDK_BDEV_NVME_DEFAULT_DELAY_CMD_SUBMIT true
|
||||
#define SPDK_BDEV_NVME_DEFAULT_KEEP_ALIVE_TIMEOUT_IN_MS (10000)
|
||||
@ -664,6 +666,8 @@ static inline void
|
||||
__bdev_nvme_io_complete(struct spdk_bdev_io *bdev_io, enum spdk_bdev_io_status status,
|
||||
const struct spdk_nvme_cpl *cpl)
|
||||
{
|
||||
spdk_trace_record(TRACE_BDEV_NVME_IO_DONE, 0, 0, (uintptr_t)bdev_io->driver_ctx,
|
||||
(uintptr_t)bdev_io);
|
||||
if (cpl) {
|
||||
spdk_bdev_io_complete_nvme_status(bdev_io, cpl->cdw0, cpl->status.sct, cpl->status.sc);
|
||||
} else {
|
||||
@ -2092,6 +2096,7 @@ bdev_nvme_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_i
|
||||
struct nvme_bdev_io *nbdev_io_to_abort;
|
||||
int rc = 0;
|
||||
|
||||
spdk_trace_record(TRACE_BDEV_NVME_IO_START, 0, 0, (uintptr_t)nbdev_io, (uintptr_t)bdev_io);
|
||||
nbdev_io->io_path = bdev_nvme_find_io_path(nbdev_ch);
|
||||
if (spdk_unlikely(!nbdev_io->io_path)) {
|
||||
if (!bdev_nvme_io_type_is_admin(bdev_io->type)) {
|
||||
@ -6757,3 +6762,23 @@ bdev_nvme_get_discovery_info(struct spdk_json_write_ctx *w)
|
||||
}
|
||||
|
||||
SPDK_LOG_REGISTER_COMPONENT(bdev_nvme)
|
||||
|
||||
SPDK_TRACE_REGISTER_FN(bdev_nvme_trace, "bdev_nvme", TRACE_GROUP_BDEV_NVME)
|
||||
{
|
||||
struct spdk_trace_tpoint_opts opts[] = {
|
||||
{
|
||||
"BDEV_NVME_IO_START", TRACE_BDEV_NVME_IO_START,
|
||||
OWNER_NONE, OBJECT_BDEV_NVME_IO, 1,
|
||||
{{ "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 }}
|
||||
},
|
||||
{
|
||||
"BDEV_NVME_IO_DONE", TRACE_BDEV_NVME_IO_DONE,
|
||||
OWNER_NONE, OBJECT_BDEV_NVME_IO, 0,
|
||||
{{ "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 }}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
spdk_trace_register_object(OBJECT_BDEV_NVME_IO, 'N');
|
||||
spdk_trace_register_description_ext(opts, SPDK_COUNTOF(opts));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user