diff options
author | Keith Busch <keith.busch@intel.com> | 2018-02-08 08:55:34 -0700 |
---|---|---|
committer | Keith Busch <keith.busch@intel.com> | 2018-02-13 17:09:50 -0700 |
commit | 4244140d7b8f406b7edfd01c050dea783aa1efc5 (patch) | |
tree | 4cd5574d84e91cf301cd4b4ac81faede92708738 | |
parent | 815c6704bf9f1c59f3a6be380a4032b9c57b12f1 (diff) | |
download | linux-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.c | 6 |
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; } /* |