From 1d6adfb09cc185ecb66e5ac681b8dbc3fe89f6ce Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Mon, 26 Jul 2021 10:16:54 -0700 Subject: [PATCH] nvmf: Add commit parameter to zcopy end operation Change-Id: I2803c806d623f345ce462b7fe1b7c02223008d9d Signed-off-by: Ben Walker Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8931 Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins --- include/spdk/nvmf_transport.h | 2 +- lib/nvmf/ctrlr.c | 4 ++-- lib/nvmf/ctrlr_bdev.c | 4 +--- lib/nvmf/nvmf_internal.h | 3 ++- test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c | 6 +++--- test/unit/lib/nvmf/fc.c/fc_ut.c | 2 ++ test/unit/lib/nvmf/tcp.c/tcp_ut.c | 2 +- 7 files changed, 12 insertions(+), 11 deletions(-) diff --git a/include/spdk/nvmf_transport.h b/include/spdk/nvmf_transport.h index 5dcd4ec06..cd63cd6fa 100644 --- a/include/spdk/nvmf_transport.h +++ b/include/spdk/nvmf_transport.h @@ -444,7 +444,7 @@ void spdk_nvmf_request_exec_fabrics(struct spdk_nvmf_request *req); int spdk_nvmf_request_free(struct spdk_nvmf_request *req); int spdk_nvmf_request_complete(struct spdk_nvmf_request *req); int spdk_nvmf_request_zcopy_start(struct spdk_nvmf_request *req); -int spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req); +int spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req, bool commit); /** * Remove the given qpair from the poll group. diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index 7d6b8d815..65562bf28 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -3625,10 +3625,10 @@ end: } int -spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req) +spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req, bool commit) { req->zcopy_phase = NVMF_ZCOPY_PHASE_END_PENDING; - return nvmf_bdev_ctrlr_end_zcopy(req); + return nvmf_bdev_ctrlr_end_zcopy(req, commit); } int diff --git a/lib/nvmf/ctrlr_bdev.c b/lib/nvmf/ctrlr_bdev.c index 80f4333d3..5710cadbb 100644 --- a/lib/nvmf/ctrlr_bdev.c +++ b/lib/nvmf/ctrlr_bdev.c @@ -880,9 +880,7 @@ nvmf_bdev_ctrlr_end_zcopy_complete(struct spdk_bdev_io *bdev_io, bool success, } int -nvmf_bdev_ctrlr_end_zcopy(struct spdk_nvmf_request *req) +nvmf_bdev_ctrlr_end_zcopy(struct spdk_nvmf_request *req, bool commit) { - bool commit = (req->cmd->nvme_cmd.opc == SPDK_NVME_OPC_WRITE) ? true : false; - return spdk_bdev_zcopy_end(req->zcopy_bdev_io, commit, nvmf_bdev_ctrlr_end_zcopy_complete, req); } diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 57a26ab64..0d4c72da2 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -466,10 +466,11 @@ int nvmf_bdev_ctrlr_start_zcopy(struct spdk_bdev *bdev, * Ends a zcopy operation * * \param req The NVMe-oF request + * \param commit Flag indicating whether the buffers shoule be committed * * \return 0 upon success * \return <0 on error */ -int nvmf_bdev_ctrlr_end_zcopy(struct spdk_nvmf_request *req); +int nvmf_bdev_ctrlr_end_zcopy(struct spdk_nvmf_request *req, bool commit); #endif /* __NVMF_INTERNAL_H__ */ diff --git a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c index 8d58f069e..8deef71d7 100644 --- a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c +++ b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c @@ -292,7 +292,7 @@ nvmf_bdev_ctrlr_start_zcopy(struct spdk_bdev *bdev, } int -nvmf_bdev_ctrlr_end_zcopy(struct spdk_nvmf_request *req) +nvmf_bdev_ctrlr_end_zcopy(struct spdk_nvmf_request *req, bool commit) { req->zcopy_bdev_io = NULL; spdk_nvmf_request_complete(req); @@ -2452,7 +2452,7 @@ test_zcopy_read(void) CU_ASSERT(ns_info.io_outstanding == 1); /* Perform the zcopy end */ - spdk_nvmf_request_zcopy_end(&req); + spdk_nvmf_request_zcopy_end(&req, false); CU_ASSERT(req.zcopy_bdev_io == NULL); CU_ASSERT(req.zcopy_phase == NVMF_ZCOPY_PHASE_COMPLETE); CU_ASSERT(qpair.outstanding.tqh_first == NULL); @@ -2537,7 +2537,7 @@ test_zcopy_write(void) CU_ASSERT(ns_info.io_outstanding == 1); /* Perform the zcopy end */ - spdk_nvmf_request_zcopy_end(&req); + spdk_nvmf_request_zcopy_end(&req, true); CU_ASSERT(req.zcopy_bdev_io == NULL); CU_ASSERT(req.zcopy_phase == NVMF_ZCOPY_PHASE_COMPLETE); CU_ASSERT(qpair.outstanding.tqh_first == NULL); diff --git a/test/unit/lib/nvmf/fc.c/fc_ut.c b/test/unit/lib/nvmf/fc.c/fc_ut.c index be9f9cc07..d3f13f7e0 100644 --- a/test/unit/lib/nvmf/fc.c/fc_ut.c +++ b/test/unit/lib/nvmf/fc.c/fc_ut.c @@ -133,6 +133,8 @@ DEFINE_STUB_V(rte_hash_free, (struct rte_hash *h)); DEFINE_STUB(nvmf_fc_lld_port_add, int, (struct spdk_nvmf_fc_port *fc_port), 0); DEFINE_STUB(nvmf_fc_lld_port_remove, int, (struct spdk_nvmf_fc_port *fc_port), 0); +DEFINE_STUB(spdk_nvmf_request_zcopy_end, int, (struct spdk_nvmf_request *req, bool commit), 0); + const char * spdk_nvme_transport_id_trtype_str(enum spdk_nvme_transport_type trtype) { diff --git a/test/unit/lib/nvmf/tcp.c/tcp_ut.c b/test/unit/lib/nvmf/tcp.c/tcp_ut.c index 1efaa4007..c388d94df 100644 --- a/test/unit/lib/nvmf/tcp.c/tcp_ut.c +++ b/test/unit/lib/nvmf/tcp.c/tcp_ut.c @@ -199,7 +199,7 @@ DEFINE_STUB(nvmf_bdev_ctrlr_start_zcopy, DEFINE_STUB(nvmf_bdev_ctrlr_end_zcopy, int, - (struct spdk_nvmf_request *req), + (struct spdk_nvmf_request *req, bool commit), 0); DEFINE_STUB_V(spdk_nvmf_request_free_buffers,