Commit c6c1234d authored by xupeng-mingtu's avatar xupeng-mingtu Committed by Konrad Sztyber
Browse files

add new trace BLOB_REQ_SET_START and BLOB_REQ_SET_COMPLETE.



Through the both new trace, the bdev_io trace of lvol and the bdev_io
trace of base bdev of blobstore can be connected in series. Like this:

RDMA_REQ_RDY_TO_EXECUTE         id: r31
BDEV_IO_START size: 8           id: i2964 (r31)
BLOB_REQ_SET_START              id: a11 (i2964)
BDEV_IO_START size: 8           id: i2965 (a11)
BDEV_NVME_IO_START              id: N2957 (i2965)
NVME_PCIE_SUBMIT                id: p2959 (N2957)
NVME_PCIE_COMPLETE              id: p2959 (N2957)
BDEV_NVME_IO_DONE               id: N2957 (i2965)
BDEV_IO_DONE                    id: i2965 (a11)
BLOB_REQ_SET_COMPLETE           id: a11 (i2964)
BDEV_IO_DONE                    id: i2964 (r31)
RDMA_REQ_EXECUTED               id: r31

Change-Id: I607428b094031814627ac4192b9e3defe7ed5337
Signed-off-by: default avatarXupeng Mingtu <jingmamour@gmail.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24130


Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent c99689f9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ struct spdk_trace_object {
};

#define	SPDK_TRACE_THREAD_NAME_LEN 16
#define SPDK_TRACE_MAX_GROUP_ID  16
#define SPDK_TRACE_MAX_GROUP_ID  20
#define SPDK_TRACE_MAX_TPOINT_ID (SPDK_TRACE_MAX_GROUP_ID * 64)
#define SPDK_TPOINT_ID(group, tpoint)	((group * 64) + tpoint)

+6 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#define OBJECT_NVMF_RDMA_IO	0x40
#define OBJECT_NVMF_TCP_IO	0x80
#define OBJECT_NVMF_FC_IO	0xA0
#define OBJECT_BLOB_CB_ARG      0xB0

/* Trace group definitions */
#define TRACE_GROUP_ISCSI	0x1
@@ -45,6 +46,7 @@
#define TRACE_GROUP_NVME_TCP	0xD
#define TRACE_GROUP_BDEV_NVME	0xE
#define TRACE_GROUP_SOCK	0xF
#define TRACE_GROUP_BLOB	0x10

/* Bdev tracepoint definitions */
#define TRACE_BDEV_IO_START		SPDK_TPOINT_ID(TRACE_GROUP_BDEV, 0x0)
@@ -162,4 +164,8 @@
#define TRACE_SOCK_REQ_PEND		SPDK_TPOINT_ID(TRACE_GROUP_SOCK, 0x1)
#define TRACE_SOCK_REQ_COMPLETE		SPDK_TPOINT_ID(TRACE_GROUP_SOCK, 0x2)

/* blobstore tracepoint definitions */
#define TRACE_BLOB_REQ_SET_START        SPDK_TPOINT_ID(TRACE_GROUP_BLOB, 0x0)
#define TRACE_BLOB_REQ_SET_COMPLETE     SPDK_TPOINT_ID(TRACE_GROUP_BLOB, 0x1)

#endif /* SPDK_INTERNAL_TRACE_DEFS */
+2 −0
Original line number Diff line number Diff line
@@ -10617,4 +10617,6 @@ SPDK_TRACE_REGISTER_FN(bdev_trace, "bdev", TRACE_GROUP_BDEV)
	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);
	spdk_trace_tpoint_register_relation(TRACE_BLOB_REQ_SET_START, OBJECT_BDEV_IO, 0);
	spdk_trace_tpoint_register_relation(TRACE_BLOB_REQ_SET_COMPLETE, OBJECT_BDEV_IO, 0);
}
+27 −0
Original line number Diff line number Diff line
@@ -16,8 +16,10 @@
#include "spdk/likely.h"
#include "spdk/util.h"
#include "spdk/string.h"
#include "spdk/trace.h"

#include "spdk_internal/assert.h"
#include "spdk_internal/trace_defs.h"
#include "spdk/log.h"

#include "blobstore.h"
@@ -10298,3 +10300,28 @@ spdk_blob_is_degraded(const struct spdk_blob *blob)

SPDK_LOG_REGISTER_COMPONENT(blob)
SPDK_LOG_REGISTER_COMPONENT(blob_esnap)

SPDK_TRACE_REGISTER_FN(blob_trace, "blob", TRACE_GROUP_BLOB)
{
	struct spdk_trace_tpoint_opts opts[] = {
		{
			"BLOB_REQ_SET_START", TRACE_BLOB_REQ_SET_START,
			OWNER_TYPE_NONE, OBJECT_BLOB_CB_ARG, 1,
			{
				{ "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 }
			}
		},
		{
			"BLOB_REQ_SET_COMPLETE", TRACE_BLOB_REQ_SET_COMPLETE,
			OWNER_TYPE_NONE, OBJECT_BLOB_CB_ARG, 0,
			{
				{ "ctx", SPDK_TRACE_ARG_TYPE_PTR, 8 }
			}
		},
	};

	spdk_trace_register_object(OBJECT_BLOB_CB_ARG, 'a');
	spdk_trace_register_description_ext(opts, SPDK_COUNTOF(opts));
	spdk_trace_tpoint_register_relation(TRACE_BDEV_IO_START, OBJECT_BLOB_CB_ARG, 1);
	spdk_trace_tpoint_register_relation(TRACE_BDEV_IO_DONE, OBJECT_BLOB_CB_ARG, 0);
}
+14 −0
Original line number Diff line number Diff line
@@ -11,7 +11,9 @@

#include "spdk/thread.h"
#include "spdk/queue.h"
#include "spdk/trace.h"

#include "spdk_internal/trace_defs.h"
#include "spdk/log.h"

void
@@ -58,6 +60,9 @@ bs_request_set_complete(struct spdk_bs_request_set *set)
	struct spdk_bs_cpl cpl = set->cpl;
	int bserrno = set->bserrno;

	spdk_trace_record(TRACE_BLOB_REQ_SET_COMPLETE, 0, 0, (uintptr_t)&set->cb_args,
			  (uintptr_t)set->cpl.u.blob_basic.cb_arg);

	TAILQ_INSERT_TAIL(&set->channel->reqs, set, link);

	bs_call_cpl(&cpl, bserrno);
@@ -87,6 +92,9 @@ bs_sequence_start(struct spdk_io_channel *_channel, struct spdk_bs_cpl *cpl,
	}
	TAILQ_REMOVE(&channel->reqs, set, link);

	spdk_trace_record(TRACE_BLOB_REQ_SET_START, 0, 0, (uintptr_t)&set->cb_args,
			  (uintptr_t)cpl->u.blob_basic.cb_arg);

	set->cpl = *cpl;
	set->bserrno = 0;
	set->channel = channel;
@@ -346,6 +354,9 @@ bs_batch_open(struct spdk_io_channel *_channel, struct spdk_bs_cpl *cpl, struct
	}
	TAILQ_REMOVE(&channel->reqs, set, link);

	spdk_trace_record(TRACE_BLOB_REQ_SET_START, 0, 0, (uintptr_t)&set->cb_args,
			  (uintptr_t)cpl->u.blob_basic.cb_arg);

	set->cpl = *cpl;
	set->bserrno = 0;
	set->channel = channel;
@@ -483,6 +494,9 @@ bs_user_op_alloc(struct spdk_io_channel *_channel, struct spdk_bs_cpl *cpl,
	}
	TAILQ_REMOVE(&channel->reqs, set, link);

	spdk_trace_record(TRACE_BLOB_REQ_SET_START, 0, 0, (uintptr_t)&set->cb_args,
			  (uintptr_t)cpl->u.blob_basic.cb_arg);

	set->cpl = *cpl;
	set->channel = channel;
	set->back_channel = NULL;
Loading