[PATCH v4 4/5] nvme-rdma: avoid IO error for nvme native multipath
Sagi Grimberg
sagi at grimberg.me
Thu Jan 28 22:37:33 EST 2021
>>> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
>>> index b7ce4f221d99..66b697461bd9 100644
>>> --- a/drivers/nvme/host/rdma.c
>>> +++ b/drivers/nvme/host/rdma.c
>>> @@ -2084,8 +2084,13 @@ static blk_status_t nvme_rdma_queue_rq(struct
>>> blk_mq_hw_ctx *hctx,
>>>
>>> err = nvme_rdma_post_send(queue, sqe, req->sge, req->num_sge,
>>> req->mr ? &req->reg_wr.wr : NULL);
>>> - if (unlikely(err))
>>> + if (unlikely(err)) {
>>> + if (err == -EIO) {
>>> + nvme_complete_failed_rq(rq,
>>> NVME_SC_HOST_PATH_ERROR);
>>
>> I was thinking about:
>> --
>> err = nvme_rdma_post_send(queue, sqe, req->sge, req->num_sge,
>> req->mr ? &req->reg_wr.wr : NULL);
>> if (unlikely(err)) {
>> if (err == -EIO) {
>> /*
>> * Fail the reuqest so upper layer can
>> failover I/O
>> * if another path is available
>> */
>> req->status = NVME_SC_HOST_PATH_ERROR;
>> nvme_rdma_complete_rq(rq);
>> return BLK_STS_OK;Need to do clean. so can
>> not directly return.
The completion path cleans up though
>>
>> }
>> goto err_unmap;
>> }
>> --
>> .
>
> _______________________________________________
> Linux-nvme mailing list
> Linux-nvme at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-nvme
More information about the Linux-nvme
mailing list