bdev: add the tsc trace

Add the tsc trace for the parent bdev_io.

Change-Id: Idf5c5df3953fa1697c384a4f83b591584dd30a80
Signed-off-by: Jin Yu <jin.yu@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476588
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Jin Yu 2019-12-04 02:41:04 +08:00 committed by Tomasz Zawadzki
parent c6e50f7f41
commit f209b343b6

View File

@ -1751,6 +1751,8 @@ _bdev_io_split(void *_bdev_io)
} else { } else {
bdev_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED; bdev_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED;
if (bdev_io->u.bdev.split_outstanding == 0) { if (bdev_io->u.bdev.split_outstanding == 0) {
spdk_trace_record_tsc(spdk_get_ticks(), TRACE_BDEV_IO_DONE, 0, 0,
(uintptr_t)bdev_io, 0);
TAILQ_REMOVE(&bdev_io->internal.ch->io_submitted, bdev_io, internal.ch_link); 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); bdev_io->internal.cb(bdev_io, false, bdev_io->internal.caller_ctx);
} }
@ -1781,6 +1783,8 @@ 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) { if (parent_io->u.bdev.split_remaining_num_blocks == 0) {
assert(parent_io->internal.cb != bdev_io_split_done); assert(parent_io->internal.cb != bdev_io_split_done);
spdk_trace_record_tsc(spdk_get_ticks(), TRACE_BDEV_IO_DONE, 0, 0,
(uintptr_t)parent_io, 0);
TAILQ_REMOVE(&parent_io->internal.ch->io_submitted, parent_io, internal.ch_link); 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.cb(parent_io, parent_io->internal.status == SPDK_BDEV_IO_STATUS_SUCCESS,
parent_io->internal.caller_ctx); parent_io->internal.caller_ctx);
@ -1886,6 +1890,8 @@ bdev_io_submit(struct spdk_bdev_io *bdev_io)
if (bdev->split_on_optimal_io_boundary && bdev_io_should_split(bdev_io)) { if (bdev->split_on_optimal_io_boundary && bdev_io_should_split(bdev_io)) {
bdev_io->internal.submit_tsc = spdk_get_ticks(); 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);
bdev_io_split(NULL, bdev_io); bdev_io_split(NULL, bdev_io);
return; return;
} }