From 36d2149a70c085af254b80767375757d0336a377 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Thu, 9 May 2019 16:38:36 -0700 Subject: [PATCH] nvme: allow admin queue fabrics cmds while resetting For fabrics controllers, the fabrics cmds are what gets the controller out of reset. Signed-off-by: Jim Harris Change-Id: I6804874e867466669a55dff11a0a865add8bbc99 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453937 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Changpeng Liu --- lib/nvme/nvme_qpair.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index 8530fdfac..92fda4da0 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -598,6 +598,11 @@ nvme_qpair_submit_request(struct spdk_nvme_qpair *qpair, struct nvme_request *re if (spdk_likely(qpair->is_enabled)) { return nvme_transport_qpair_submit_request(qpair, req); + } else if (nvme_qpair_is_admin_queue(qpair) && req->cmd.opc == SPDK_NVME_OPC_FABRIC) { + /* Always allow fabrics commands through on the admin qpair - these get + * the controller out of reset state. + */ + return nvme_transport_qpair_submit_request(qpair, req); } else { /* The controller is being reset - queue this request and * submit it later when the reset is completed.