From 7554f8174ed1359ade678a24464ffe3c04e32d48 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Tue, 7 Dec 2021 07:58:01 +0100 Subject: [PATCH] nvmf: make zcopy_end void Since spdk_bdev_zcopy_end() cannot really fail (it only fails if we pass a bad bdev_io), we can simplify the nvmf zcopy_end functions by making them void and always expect asynchronous completion. Signed-off-by: Konrad Sztyber Change-Id: I6e88ac28aba13acadea88489ac0dd20d1f52f999 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10790 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris Reviewed-by: Ben Walker Reviewed-by: Anil Veerabhadrappa Tested-by: SPDK CI Jenkins --- include/spdk/nvmf_transport.h | 2 +- lib/nvmf/ctrlr.c | 6 ++++-- lib/nvmf/ctrlr_bdev.c | 4 +--- lib/nvmf/nvmf_internal.h | 7 +------ test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c | 3 +-- test/unit/lib/nvmf/fc.c/fc_ut.c | 2 +- test/unit/lib/nvmf/tcp.c/tcp_ut.c | 5 +---- 7 files changed, 10 insertions(+), 19 deletions(-) diff --git a/include/spdk/nvmf_transport.h b/include/spdk/nvmf_transport.h index e1e8c3e2b..ea93c14f3 100644 --- a/include/spdk/nvmf_transport.h +++ b/include/spdk/nvmf_transport.h @@ -449,7 +449,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); void spdk_nvmf_request_zcopy_start(struct spdk_nvmf_request *req); -int spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req, bool commit); +void spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req, bool commit); static inline bool spdk_nvmf_request_using_zcopy(const struct spdk_nvmf_request *req) diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index a4179cb9f..9b31fdd83 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -3731,11 +3731,13 @@ spdk_nvmf_request_zcopy_start(struct spdk_nvmf_request *req) spdk_nvmf_request_exec(req); } -int +void spdk_nvmf_request_zcopy_end(struct spdk_nvmf_request *req, bool commit) { + assert(req->zcopy_phase == NVMF_ZCOPY_PHASE_EXECUTE); req->zcopy_phase = NVMF_ZCOPY_PHASE_END_PENDING; - return nvmf_bdev_ctrlr_zcopy_end(req, commit); + + nvmf_bdev_ctrlr_zcopy_end(req, commit); } int diff --git a/lib/nvmf/ctrlr_bdev.c b/lib/nvmf/ctrlr_bdev.c index 01faece8d..91d940c20 100644 --- a/lib/nvmf/ctrlr_bdev.c +++ b/lib/nvmf/ctrlr_bdev.c @@ -909,7 +909,7 @@ nvmf_bdev_ctrlr_zcopy_end_complete(struct spdk_bdev_io *bdev_io, bool success, spdk_nvmf_request_complete(req); } -int +void nvmf_bdev_ctrlr_zcopy_end(struct spdk_nvmf_request *req, bool commit) { int rc __attribute__((unused)); @@ -918,6 +918,4 @@ nvmf_bdev_ctrlr_zcopy_end(struct spdk_nvmf_request *req, bool commit) /* The only way spdk_bdev_zcopy_end() can fail is if we pass a bdev_io type that isn't ZCOPY */ assert(rc == 0); - - return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS; } diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 56b7bb181..dcc03db4b 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -498,12 +498,7 @@ int nvmf_bdev_ctrlr_zcopy_start(struct spdk_bdev *bdev, * * \param req The NVMe-oF request * \param commit Flag indicating whether the buffers should be committed - * - * \return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE if the command was completed immediately or - * SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS if the command was submitted and will be - * completed asynchronously. Asynchronous completions are notified through - * spdk_nvmf_request_complete(). */ -int nvmf_bdev_ctrlr_zcopy_end(struct spdk_nvmf_request *req, bool commit); +void nvmf_bdev_ctrlr_zcopy_end(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 3160afb47..499b0ee94 100644 --- a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c +++ b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c @@ -294,12 +294,11 @@ nvmf_bdev_ctrlr_zcopy_start(struct spdk_bdev *bdev, return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; } -int +void nvmf_bdev_ctrlr_zcopy_end(struct spdk_nvmf_request *req, bool commit) { req->zcopy_bdev_io = NULL; spdk_nvmf_request_complete(req); - return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; } static void diff --git a/test/unit/lib/nvmf/fc.c/fc_ut.c b/test/unit/lib/nvmf/fc.c/fc_ut.c index d3f13f7e0..0871c3909 100644 --- a/test/unit/lib/nvmf/fc.c/fc_ut.c +++ b/test/unit/lib/nvmf/fc.c/fc_ut.c @@ -133,7 +133,7 @@ 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); +DEFINE_STUB_V(spdk_nvmf_request_zcopy_end, (struct spdk_nvmf_request *req, bool commit)); 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 0744fe000..930cea3b8 100644 --- a/test/unit/lib/nvmf/tcp.c/tcp_ut.c +++ b/test/unit/lib/nvmf/tcp.c/tcp_ut.c @@ -198,10 +198,7 @@ DEFINE_STUB(nvmf_bdev_ctrlr_zcopy_start, struct spdk_nvmf_request *req), 0); -DEFINE_STUB(nvmf_bdev_ctrlr_zcopy_end, - int, - (struct spdk_nvmf_request *req, bool commit), - 0); +DEFINE_STUB_V(nvmf_bdev_ctrlr_zcopy_end, (struct spdk_nvmf_request *req, bool commit)); DEFINE_STUB_V(spdk_nvmf_request_free_buffers, (struct spdk_nvmf_request *req, struct spdk_nvmf_transport_poll_group *group,