[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