From 14bf912df9de245098f8e8acdf7f12988139e28e Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Fri, 22 Jun 2018 14:22:22 -0700 Subject: [PATCH] bdevperf: Use new zcopy API for reads Change-Id: I71023d56f9023f46ff65291d22b1b8d31595a7b5 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/416579 Tested-by: SPDK CI Jenkins Reviewed-by: Darek Stojaczyk Reviewed-by: Shuhei Matsumoto Reviewed-by: Jim Harris --- test/bdev/bdevperf/bdevperf.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/test/bdev/bdevperf/bdevperf.c b/test/bdev/bdevperf/bdevperf.c index 64e90ae43..b8fee1c4b 100644 --- a/test/bdev/bdevperf/bdevperf.c +++ b/test/bdev/bdevperf/bdevperf.c @@ -449,6 +449,17 @@ bdevperf_verify_write_complete(struct spdk_bdev_io *bdev_io, bool success, } } +static void +bdevperf_zcopy_complete(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg) +{ + if (!success) { + bdevperf_complete(bdev_io, success, cb_arg); + return; + } + + spdk_bdev_zcopy_end(bdev_io, false, bdevperf_complete, cb_arg); +} + static __thread unsigned int seed = 0; static void @@ -528,7 +539,6 @@ bdevperf_submit_task(void *arg) struct spdk_bdev_desc *desc; struct spdk_io_channel *ch; spdk_bdev_io_completion_cb cb_fn; - void *rbuf; int rc = 0; desc = target->bdev_desc; @@ -558,9 +568,13 @@ bdevperf_submit_task(void *arg) target->io_size_blocks, bdevperf_complete, task); break; case SPDK_BDEV_IO_TYPE_READ: - rbuf = g_zcopy ? NULL : task->buf; - rc = spdk_bdev_read_blocks(desc, ch, rbuf, task->offset_blocks, - target->io_size_blocks, bdevperf_complete, task); + if (g_zcopy) { + rc = spdk_bdev_zcopy_start(desc, ch, task->offset_blocks, target->io_size_blocks, + true, bdevperf_zcopy_complete, task); + } else { + rc = spdk_bdev_read_blocks(desc, ch, task->buf, task->offset_blocks, + target->io_size_blocks, bdevperf_complete, task); + } break; default: assert(false);