summaryrefslogtreecommitdiffstats
path: root/drivers/nvme
diff options
context:
space:
mode:
authorKeith Busch2018-02-08 16:55:34 +0100
committerKeith Busch2018-02-14 01:09:50 +0100
commit4244140d7b8f406b7edfd01c050dea783aa1efc5 (patch)
tree4cd5574d84e91cf301cd4b4ac81faede92708738 /drivers/nvme
parentnvme-pci: Remap CMB SQ entries on every controller reset (diff)
downloadkernel-qcow2-linux-4244140d7b8f406b7edfd01c050dea783aa1efc5.tar.gz
kernel-qcow2-linux-4244140d7b8f406b7edfd01c050dea783aa1efc5.tar.xz
kernel-qcow2-linux-4244140d7b8f406b7edfd01c050dea783aa1efc5.zip
nvme-pci: Fix timeouts in connecting state
We need to halt the controller immediately if we haven't completed initialization as indicated by the new "connecting" state. Fixes: ad70062cdb ("nvme-pci: introduce RECONNECTING state to mark initializing procedure") Signed-off-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme')
-rw-r--r--drivers/nvme/host/pci.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index b427157af74e..73036d2fbbd5 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1215,13 +1215,17 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
* cancellation error. All outstanding requests are completed on
* shutdown, so we return BLK_EH_HANDLED.
*/
- if (dev->ctrl.state == NVME_CTRL_RESETTING) {
+ switch (dev->ctrl.state) {
+ case NVME_CTRL_CONNECTING:
+ case NVME_CTRL_RESETTING:
dev_warn(dev->ctrl.device,
"I/O %d QID %d timeout, disable controller\n",
req->tag, nvmeq->qid);
nvme_dev_disable(dev, false);
nvme_req(req)->flags |= NVME_REQ_CANCELLED;
return BLK_EH_HANDLED;
+ default:
+ break;
}
/*