summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Busch <keith.busch@intel.com>2018-02-08 08:55:34 -0700
committerKeith Busch <keith.busch@intel.com>2018-02-13 17:09:50 -0700
commit4244140d7b8f406b7edfd01c050dea783aa1efc5 (patch)
tree4cd5574d84e91cf301cd4b4ac81faede92708738
parent815c6704bf9f1c59f3a6be380a4032b9c57b12f1 (diff)
downloadlinux-4244140d7b8f406b7edfd01c050dea783aa1efc5.tar.gz
linux-4244140d7b8f406b7edfd01c050dea783aa1efc5.tar.bz2
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>
-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;
}
/*