[PATCH 1/2] nvme-rdma: Fix race between queue timeout and error recovery
Sagi Grimberg
sagi at grimberg.me
Wed Apr 4 05:32:07 PDT 2018
> When returning BLK_EH_HANDLED from nvme_rdma_timeout() the block layer
> complete the request.
> Error recovery may also complete the request when aborting the requests.
>
> Signed-off-by: Israel Rukshin <israelr at mellanox.com>
> Reviewed-by: Max Gurtovoy <maxg at mellanox.com>
> ---
> drivers/nvme/host/rdma.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> index 758537e..c1abfc8 100644
> --- a/drivers/nvme/host/rdma.c
> +++ b/drivers/nvme/host/rdma.c
> @@ -1595,10 +1595,7 @@ static int nvme_rdma_cm_handler(struct rdma_cm_id *cm_id,
> /* queue error recovery */
> nvme_rdma_error_recovery(req->queue->ctrl);
>
> - /* fail with DNR on cmd timeout */
> - nvme_req(rq)->status = NVME_SC_ABORT_REQ | NVME_SC_DNR;
> -
> - return BLK_EH_HANDLED;
> + return BLK_EH_RESET_TIMER;
> }
These look awfully familiar...
More information about the Linux-nvme
mailing list