[PATCH v2] nvme: rdma/tcp: call nvme_mpath_stop() from reconnect workqueue

Christoph Hellwig hch at lst.de
Mon Apr 26 15:51:05 BST 2021


On Fri, Apr 23, 2021 at 05:21:03PM -0700, Sagi Grimberg wrote:
>
>> diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
>> index be905d4fdb47..fc07a7b0dc1d 100644
>> --- a/drivers/nvme/host/rdma.c
>> +++ b/drivers/nvme/host/rdma.c
>> @@ -1202,6 +1202,7 @@ static void nvme_rdma_error_recovery_work(struct work_struct *work)
>>   		return;
>>   	}
>>   +	nvme_mpath_stop(&ctrl->ctrl);
>>   	nvme_rdma_reconnect_or_remove(ctrl);
>
> Its pretty annoying to have to needlessly wait for the ana log page
> request to timeout... But this is also needed because we init ana_lock
> in nvme_mpath_init while it can be potentially taken in ana_work, which
> is a precipice for bad things...

I also really hate open coding this mpath detail in the transport
drivers.  Didn't you at some point have a series to factor out more
common code from the whole reset and reconnect path?



More information about the Linux-nvme mailing list