From 440ee15bf31bcccab6e0609edead3a87799f031d Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 8 Oct 2021 10:28:30 +0900 Subject: [PATCH] ut/bdev_nvme: Fix bug in spdk_nvme_ctrlr_reset_async/poll_async() stubs In the SPDK NVMe driver, spdk_nvme_ctrlr_reset_async() sets ctrlr->is_failed to false and spdk_nvme_ctrlr_reset_poll_async() sets ctrlr->is_failed to true if it fails. On the other hand, in the unit test for the NVMe bdev module, the stub for spdk_nvme_ctrlr_reset_async() does nothing and the stub for spdk_nvme_ctrlr_reset_poll_async() sets ctrlr->is_failed to false if it succeeds. This bug made us very difficult to write unit test for I/O retry. Hence fix this bug. Signed-off-by: Shuhei Matsumoto Change-Id: Ic0dcf1109ce543a53fca74708fc86c8c74a17692 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9829 Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins --- .../lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c b/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c index cac7e3896..f2e3c84c5 100644 --- a/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c +++ b/test/unit/lib/bdev/nvme/bdev_nvme.c/bdev_nvme_ut.c @@ -714,25 +714,19 @@ spdk_nvme_ctrlr_free_io_qpair(struct spdk_nvme_qpair *qpair) return 0; } -int -spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr) -{ - if (ctrlr->fail_reset) { - return -EIO; - } - - ctrlr->is_failed = false; - - return 0; -} - int spdk_nvme_ctrlr_reset_poll_async(struct spdk_nvme_ctrlr_reset_ctx *ctrlr_reset_ctx) { struct spdk_nvme_ctrlr *ctrlr = ctrlr_reset_ctx->ctrlr; free(ctrlr_reset_ctx); - return spdk_nvme_ctrlr_reset(ctrlr); + + if (ctrlr->fail_reset) { + ctrlr->is_failed = true; + return -EIO; + } + + return 0; } int @@ -746,6 +740,8 @@ spdk_nvme_ctrlr_reset_async(struct spdk_nvme_ctrlr *ctrlr, return -ENOMEM; } + ctrlr->is_failed = false; + ctrlr_reset_ctx->ctrlr = ctrlr; *reset_ctx = ctrlr_reset_ctx;