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

From: Christoph Hellwig
Date: Wed Sep 04 2019 - 11:42:21 EST


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.