summaryrefslogtreecommitdiffstats
path: root/drivers/nvme/host
diff options
context:
space:
mode:
authorSagi Grimberg <sagi@grimberg.me>2017-07-05 09:56:13 +0300
committerSagi Grimberg <sagi@grimberg.me>2017-07-06 09:49:43 +0300
commit842594c8775b585c58459e044708c0335b6aa6b7 (patch)
tree9e2c791f916f7e7d9c6e0c839b4dd0b14e4aefc9 /drivers/nvme/host
parentd09f2b45f346f0a9e5e1b5fcea531b1b393671dc (diff)
downloadop-kernel-dev-842594c8775b585c58459e044708c0335b6aa6b7.zip
op-kernel-dev-842594c8775b585c58459e044708c0335b6aa6b7.tar.gz
nvme-rdma: unconditionally recycle the request mr
When our RDMA queue-pair is torn down with high load of I/O traffic, we have no way of knowing if the memory region was actually registered by the reg_mr work request as it completion flushes with error (hw might have done it or not). So in order to not deal with all this uncertanty, we simply recycle the MR in reinit_request. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Diffstat (limited to 'drivers/nvme/host')
-rw-r--r--drivers/nvme/host/rdma.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index ccdbd99..da04df1 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -272,9 +272,6 @@ static int nvme_rdma_reinit_request(void *data, struct request *rq)
struct nvme_rdma_request *req = blk_mq_rq_to_pdu(rq);
int ret = 0;
- if (!req->mr->need_inval)
- goto out;
-
ib_dereg_mr(req->mr);
req->mr = ib_alloc_mr(dev->pd, IB_MR_TYPE_MEM_REG,
OpenPOWER on IntegriCloud