From 8f11535d70b3d2ef61f9e7562033773642a95af2 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Fri, 29 Oct 2021 22:08:12 +0800 Subject: [PATCH] nvmf: only process fabric commands when transport is fabric type Fixes issue #2218. Change-Id: I9298e4a8d16e7ddda7366aebc63b46c36ab54234 Signed-off-by: Changpeng Liu Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10061 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/nvmf/ctrlr.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index a1725c154..2e16bc353 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -4132,6 +4132,7 @@ void spdk_nvmf_request_exec(struct spdk_nvmf_request *req) { struct spdk_nvmf_qpair *qpair = req->qpair; + struct spdk_nvmf_transport *transport = qpair->transport; enum spdk_nvmf_request_exec_status status; if (!spdk_nvmf_using_zcopy(req->zcopy_phase)) { @@ -4147,7 +4148,8 @@ spdk_nvmf_request_exec(struct spdk_nvmf_request *req) /* Place the request on the outstanding list so we can keep track of it */ nvmf_add_to_outstanding_queue(req); - if (spdk_unlikely(req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC)) { + if (spdk_unlikely((req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC) && + spdk_nvme_trtype_is_fabrics(transport->ops->type))) { status = nvmf_ctrlr_process_fabrics_cmd(req); } else if (spdk_unlikely(nvmf_qpair_is_admin_queue(qpair))) { status = nvmf_ctrlr_process_admin_cmd(req);