Bdev: add the ZCopy operation for IO stats
To track the ZCopy IO stats like IOs and Bytes read and written. Change-Id: Iab2c4d8397aee5d746db9491bd4e8ac4eea69529 Signed-off-by: GangCao <gang.cao@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/539 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
parent
f6e682af75
commit
9e33ad7562
@ -1474,6 +1474,12 @@ bdev_qos_io_to_limit(struct spdk_bdev_io *bdev_io)
|
||||
case SPDK_BDEV_IO_TYPE_READ:
|
||||
case SPDK_BDEV_IO_TYPE_WRITE:
|
||||
return true;
|
||||
case SPDK_BDEV_IO_TYPE_ZCOPY:
|
||||
if (bdev_io->u.bdev.zcopy.start) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1493,6 +1499,13 @@ bdev_is_read_io(struct spdk_bdev_io *bdev_io)
|
||||
}
|
||||
case SPDK_BDEV_IO_TYPE_READ:
|
||||
return true;
|
||||
case SPDK_BDEV_IO_TYPE_ZCOPY:
|
||||
/* Populate to read from disk */
|
||||
if (bdev_io->u.bdev.zcopy.populate) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -1510,6 +1523,13 @@ bdev_get_io_size_in_byte(struct spdk_bdev_io *bdev_io)
|
||||
case SPDK_BDEV_IO_TYPE_READ:
|
||||
case SPDK_BDEV_IO_TYPE_WRITE:
|
||||
return bdev_io->u.bdev.num_blocks * bdev->blocklen;
|
||||
case SPDK_BDEV_IO_TYPE_ZCOPY:
|
||||
/* Track the data in the start phase only */
|
||||
if (bdev_io->u.bdev.zcopy.start) {
|
||||
return bdev_io->u.bdev.num_blocks * bdev->blocklen;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@ -4481,6 +4501,23 @@ bdev_io_complete(void *ctx)
|
||||
bdev_io->internal.ch->stat.bytes_unmapped += bdev_io->u.bdev.num_blocks * bdev_io->bdev->blocklen;
|
||||
bdev_io->internal.ch->stat.num_unmap_ops++;
|
||||
bdev_io->internal.ch->stat.unmap_latency_ticks += tsc_diff;
|
||||
break;
|
||||
case SPDK_BDEV_IO_TYPE_ZCOPY:
|
||||
/* Track the data in the start phase only */
|
||||
if (bdev_io->u.bdev.zcopy.start) {
|
||||
if (bdev_io->u.bdev.zcopy.populate) {
|
||||
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_diff;
|
||||
} else {
|
||||
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_diff;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user