From d093a9fb852104eee591f700d5d101bf4c2e0907 Mon Sep 17 00:00:00 2001 From: Krishna Kanth Reddy Date: Thu, 5 Jan 2023 07:55:43 +0530 Subject: [PATCH] bdev_xnvme: Remove duplicate invocation of bdev_xnvme_destruct Fix for the issue 2803. Reporting an error when deleting xnvme bdev. bdev_xnvme_destruct gets invoked from the fn_table->destruct prior to the xnvme_bdev_unregister_cb while deleting the xnvme bdev. Hence removed the duplicate invocation of bdev_xnvme_destruct in the function xnvme_bdev_unregister_cb. Additionally, fixed the hang issue when the bdev_xnvme_delete gets called multiple times for a xnvme bdev. Signed-off-by: Krishna Kanth Reddy Change-Id: Ie36a84987ace20d324b7a139ca67fd60bf46e25b Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16144 Reviewed-by: Ye Chen Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot --- module/bdev/xnvme/bdev_xnvme.c | 1 - module/bdev/xnvme/bdev_xnvme_rpc.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/module/bdev/xnvme/bdev_xnvme.c b/module/bdev/xnvme/bdev_xnvme.c index 256082c99..399288aa7 100644 --- a/module/bdev/xnvme/bdev_xnvme.c +++ b/module/bdev/xnvme/bdev_xnvme.c @@ -428,7 +428,6 @@ xnvme_bdev_unregister_cb(void *arg, int bdeverrno) { struct delete_xnvme_bdev_ctx *ctx = arg; - bdev_xnvme_destruct(ctx->xnvme); ctx->cb_fn(ctx->cb_arg, bdeverrno); free(ctx); } diff --git a/module/bdev/xnvme/bdev_xnvme_rpc.c b/module/bdev/xnvme/bdev_xnvme_rpc.c index f69867895..f061a9b8d 100644 --- a/module/bdev/xnvme/bdev_xnvme_rpc.c +++ b/module/bdev/xnvme/bdev_xnvme_rpc.c @@ -120,6 +120,7 @@ rpc_bdev_xnvme_delete(struct spdk_jsonrpc_request *request, bdev = spdk_bdev_desc_get_bdev(desc); spdk_bdev_close(desc); } else { + spdk_jsonrpc_send_error_response(request, -ENODEV, spdk_strerror(ENODEV)); goto cleanup; }