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

Martin Wilck mwilck at suse.com
Mon Apr 26 17:27:36 BST 2021


On Mon, 2021-04-26 at 16:51 +0200, Christoph Hellwig wrote:
> 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?
> 

So ... resubmit and cc stable as Sagi suggested, or work out something
else?

Martin





More information about the Linux-nvme mailing list