Re: [PATCH] nvme: remove multipath module parameter

From: Nilay Shroff
Date: Fri Mar 07 2025 - 10:20:47 EST




On 3/7/25 6:16 AM, Keith Busch wrote:
> On Thu, Mar 06, 2025 at 04:16:54PM +0100, Christoph Hellwig wrote:
>> On Thu, Mar 06, 2025 at 08:01:19AM -0700, Keith Busch wrote:
>>
>>> Or consider a true multiport PCIe where each port connects to a
>>> different host. Each host sees a single port so they're not using
>>> multipath capabilities, and the admin wants the MD behavior that removes
>>> a disk on hot plug. Or even if one host sees both paths of a multiport
>>> PCIe, they still might want that hot plug behavior. The module parameter
>>> makes that possible, so some equivalent should be available before
>>> removing it.
>>
>> A module-wide parameter is absolutely the wrong way to configure it.
>> You'd ad best want it per-controller or even per-namespace. One
>> tradeoff would be to disable the multipath code for private namespaces,
>> although that would cause problems when rescanning changes the flag.
>
> It's not really about private vs. shared namespaces, though. There
> really is no programatic way for the driver to know what behavior the
> admin needs out of their system without user input. If you don't want a
> module parameter, then the driver will just have to default to
> something, then the user will have to do something to change it later.
> Not very pleasant compared to a simple one time boot parameter.
>
I think always creating multipath head node even for the disk which doesn't
have CMIC/NMIC capability should be useful. That way, we may then be able
to remove multipath module parameter? In fact, you already mentioned about
it in one of your previous message. I see two approaches (one of them you
proposed and another one Christoph proposed:
https://lore.kernel.org/linux-nvme/Y+1aKcQgbskA2tra@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/).

Maybe in first cut we should create multipath head disk node always for
single/multi ported NVMe disk. Later we may enhance it and allow pinning the
head node for hotplug events so that head node dev name remains consistent
across disk add/remove hotplug events.

Thanks,
--Nilay