From 676717e4dabfeda2c2b86e3e7bd155deb5ea8e8e Mon Sep 17 00:00:00 2001 From: Piotr Pelplinski Date: Mon, 19 Nov 2018 14:52:23 +0100 Subject: [PATCH] bdev: calculate tsc_diff in bdev_io_complete This will be required in following histogram patches. Signed-off-by: Piotr Pelplinski Change-Id: I2eee6629243b7a4838a80dc1de33ae485c58081e Reviewed-on: https://review.gerrithub.io/433874 Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- lib/bdev/bdev.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index ed760592d..6d18d9d91 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -3028,7 +3028,7 @@ static inline void _spdk_bdev_io_complete(void *ctx) { struct spdk_bdev_io *bdev_io = ctx; - uint64_t tsc; + uint64_t tsc, tsc_diff; if (spdk_unlikely(bdev_io->internal.in_submit_request || bdev_io->internal.io_submit_ch)) { /* @@ -3050,6 +3050,7 @@ _spdk_bdev_io_complete(void *ctx) } tsc = spdk_get_ticks(); + tsc_diff = tsc - bdev_io->internal.submit_tsc; spdk_trace_record_tsc(tsc, TRACE_BDEV_IO_DONE, 0, 0, (uintptr_t)bdev_io, 0); if (bdev_io->internal.status == SPDK_BDEV_IO_STATUS_SUCCESS) { @@ -3057,12 +3058,12 @@ _spdk_bdev_io_complete(void *ctx) case SPDK_BDEV_IO_TYPE_READ: bdev_io->internal.ch->stat.bytes_read += bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; bdev_io->internal.ch->stat.num_read_ops++; - bdev_io->internal.ch->stat.read_latency_ticks += (tsc - bdev_io->internal.submit_tsc); + bdev_io->internal.ch->stat.read_latency_ticks += tsc_diff; break; case SPDK_BDEV_IO_TYPE_WRITE: bdev_io->internal.ch->stat.bytes_written += bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen; bdev_io->internal.ch->stat.num_write_ops++; - bdev_io->internal.ch->stat.write_latency_ticks += (tsc - bdev_io->internal.submit_tsc); + bdev_io->internal.ch->stat.write_latency_ticks += tsc_diff; break; default: break;