diff options
author | Jens Axboe <axboe@kernel.dk> | 2020-05-08 09:49:24 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-05-08 09:49:24 -0600 |
commit | ded3148fc6531d68b5b56aeda55a05e85efecf85 (patch) | |
tree | 2e0d8c3973b288f64d1a5596f1986528013019e6 | |
parent | 860a93ff87acd001eea827b70f4a7a64c0854b81 (diff) | |
parent | 8874d040ff34285e8b8458a75f9434e19ed06174 (diff) |
Merge branch 'nvme-5.7' of git://git.infradead.org/nvme into block-5.7block-5.7-2020-05-08
Pull NVMe fixes from Christoph.
* 'nvme-5.7' of git://git.infradead.org/nvme:
nvme: fix possible hang when ns scanning fails during error recovery
nvme-pci: fix "slimmer CQ head update"
-rw-r--r-- | drivers/nvme/host/core.c | 2 | ||||
-rw-r--r-- | drivers/nvme/host/pci.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index f2adea96b04c..f3c037f5a9ba 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -1110,7 +1110,7 @@ static int nvme_identify_ns_descs(struct nvme_ctrl *ctrl, unsigned nsid, * Don't treat an error as fatal, as we potentially already * have a NGUID or EUI-64. */ - if (status > 0) + if (status > 0 && !(status & NVME_SC_DNR)) status = 0; goto free_data; } diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 4e79e412b276..e13c370de830 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -973,9 +973,13 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq, u16 idx) static inline void nvme_update_cq_head(struct nvme_queue *nvmeq) { - if (++nvmeq->cq_head == nvmeq->q_depth) { + u16 tmp = nvmeq->cq_head + 1; + + if (tmp == nvmeq->q_depth) { nvmeq->cq_head = 0; nvmeq->cq_phase ^= 1; + } else { + nvmeq->cq_head = tmp; } } |