Re: [PATCH] nvme-core: Fix subsystem instance mismatches

From: Keith Busch
Date: Wed Sep 04 2019 - 11:56:19 EST


On Wed, Sep 04, 2019 at 05:42:15PM +0200, Christoph Hellwig wrote:
> On Wed, Sep 04, 2019 at 08:44:27AM -0600, Keith Busch wrote:
> > Let me step through an example:
> >
> > Ctrl A gets instance 0.
> >
> > Its subsystem gets the same instance, and takes ref count on it:
> > all namespaces in this subsystem will use '0'.
> >
> > Ctrl B gets instance 1, and it's in the same subsystem as Ctrl A so
> > no new subsytem is allocated.
> >
> > Ctrl A is disconnected, dropping its ref on instance 0, but the
> > subsystem still has its refcount, making it unavailable.
> >
> > Ctrl A is reconnected, and allocates instance 2 because 0 is still in
> > use.
> >
> > Now all the namespaces in this subsystem are prefixed with nvme0, but no
> > controller exists with the same prefix. We still have inevitable naming
> > mismatch, right?
>
> I think th major confusion was that we can use the same handle for
> and unrelated subsystem vs controller, and that would avoid it.
>
> I don't see how we can avoid the controller is entirely different
> from namespace problem ever.

Can we just ensure there is never a matching controller then? This
patch will accomplish that and simpler than wrapping the instance in a
refcount'ed object:

http://lists.infradead.org/pipermail/linux-nvme/2019-May/024142.html