[PATCH v3 0/5] nvme: make core.nvme_multipath configurable
John Meneghini
jmeneghi at redhat.com
Fri Mar 28 12:38:21 PDT 2025
As agreed at LSF/MM here is a v3 patch set which includes the
new CONFIG_NVME_ENABLE_MULTIPATH_PARAM option.
NOTE: we agreed to call this CONFIG_NVME_DISBALE_MULTIPATH_PARAM.
However, during testing I realized that we needed to make the
logic positive or else many of the default make 'config' rules
would produce the wrong results.
For example:
make localmodconfig
make allmodconfig
would end up compiling out the core_nvme.multipath
parameter, and I don't think this is what we want.
To remove the core.nvme_multipath one needs to
explicity overide the default setting by saying
CONFIG_NVME_ENABLE_MULTIPATH_PARAM=n.
The current default setting for this option is
CONFIG_NVME_ENABLE_MULTIPATH_PARAM=y.
To remove the core_nvme.multipath one needs to
explicity overide the default setting by saying
CONFIG_NVME_ENABLE_MULTIPATH_PARAM=n.
Keith, I suggest that we add these to nvme-6.16 since there are a few
more changes than I had planned for. I'd like these patches to get some
soak time before they merge.
Closes: https://lore.kernel.org/linux-nvme/20241121220321.40616-1-bgurney@redhat.com/
Closes: https://lore.kernel.org/linux-nvme/20250204211158.43126-1-bgurney@redhat.com/
Closes: https://lore.kernel.org/linux-nvme/20250228032541.369804-1-jmeneghi@redhat.com/
Signed-off-by: John Meneghini <jmeneghi at redhat.com>
Changes Since v2
Changed the patch order and added:
nvme: add NVME_ENABLE_MULTIPATH_PARAM for loongarch
nvme: add NVME_ENABLE_MULTIPATH_PARAM for powerpc skiroot
I'm not 100% sure these two are needed but it would be
better to be safe than sorry.
nvme-multipath: add the NVME_ENABLE_MULTIPATH_PARAM config option
Changed the name of this config option from
NVME_MULTIPATH_PARAM to NVME_ENABLE_MULTIPATH_PARAM and
Fixed up the Kconfig description.
Tested the following make options:
make localmodconfig
make alldefconfig
make mod2noconfig
make allyesconfig
make allmodconfig
make olddefconfig
make oldconfig - accept all defaults
These all provide no change in current behavior.
Changes Since v1
Rebased patches to nvme-v6.15
nvme: add mulitipath warning to nvme_alloc_ns
Dropped this patch because the dmesg it produced was redundant and not
needed. Testing multiport devices with CONFIG_NVME_MULTIPATH disabled
show the following console message at boot.
[167523.157284] nvme nvme5: Found shared namespace 1, but multipathing not supported.
[167523.217083] nvme nvme6: Please enable CONFIG_NVME_MULTIPATH for full support of multi-port devices.
nvme-multipath: add the NVME_MULTIPATH_PARAM config option
Fixed up the Kconfig description for NVME_MULTIPATH_PARAM.
Add default y and tested the follow Kconfig options.
Tested the following:
make mod2noconfig
make allyesconfig
make allmodconfig
make olddefconfig
make oldconfig - accept all defaults
No change in current behavior.
nvme: update the multipath warning in nvme_init_ns_head
Tests ran with CONFIG_NVME_MULTIPATH=y and CONFIG_NVME_MULTIPATH_PARM=n
No change in current behavior except:
[root at rhel-storage-108 ~]# cat /sys/module/nvme_core/parameters/multipath
cat: /sys/module/nvme_core/parameters/multipath: No such file or directory
The following does nothing, just like it does when CONFIG_NVME_MULTIPATH=n
[root at rhel-storage-108 ~]# grubby --update-kernel=ALL --args="nvme_core.multipath=N"
[root at rhel-storage-108 ~]# reboot now
.
.
.
[root at rhel-storage-108 ~]# cat /proc/cmdline
BOOT_IMAGE=(hd1,gpt2)/vmlinuz-6.14.0-rc2_config_ana4a+ ... nvme_core.multipath=N
[root at rhel-storage-108 ~]# cat /sys/module/nvme_core/parameters/multipath
cat: /sys/module/nvme_core/parameters/multipath: No such file or directory
Tests ran with CONFIG_NVME_MULTIPATH=y and CONFIG_NVME_MULTIPATH_PARM=y
There is no change in current behavior:
Tests ran with CONFIG_NVME_MULTIPATH=y, CONFIG_NVME_MULTIPATH_PARM=y
and nvme_core.multipath=N
[ 372.040105] nvme nvme4: Found shared namespace 1, but multipathing not supported.
[ 372.047606] nvme nvme4: Shared namespace support requires core_nvme.multipath=Y.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
new message
[ 372.105469] nvme nvme5: creating 2 I/O queues.
[ 372.110383] nvme nvme5: mapped 2/0/0 default/read/poll queues.
[ 372.125480] nvme nvme5: new ctrl: NQN ....
[ 372.166081] nvme nvme5: Found shared namespace 1, but multipathing not supported.
[ 372.235964] nvme nvme6: creating 2 I/O queues.
[ 372.240926] nvme nvme6: mapped 2/0/0 default/read/poll queues.
[ 372.255964] nvme nvme6: new ctrl: NQN ....
[root at rhel-storage-108 ~]# cat /sys/module/nvme_core/parameters/multipath
N
[root at rhel-storage-108 ~]# grubby --remove-args="nvme_core.multipath=N" --update-kernel=ALL
[root at rhel-storage-108 ~]# grubby --info=ALL | grep nvme_core
[root at rhel-storage-108 ~]# reboot now
.
.
.
[root at rhel-storage-108 ~]# cat /sys/module/nvme_core/parameters/multipath
Y
John Meneghini (5):
nvme: update the multipath warning in nvme_init_ns_head
nvme: change the NVME_MULTIPATH config option description
nvme: add the NVME_ENABLE_MULTIPATH_PARAM config option
nvme: add NVME_ENABLE_MULTIPATH_PARAM for loongarch
nvme: add NVME_ENABLE_MULTIPATH_PARAM for powerpc skiroot
arch/loongarch/configs/loongson3_defconfig | 1 +
arch/powerpc/configs/skiroot_defconfig | 1 +
drivers/nvme/host/Kconfig | 24 ++++++++++++++++++----
drivers/nvme/host/core.c | 2 +-
drivers/nvme/host/multipath.c | 2 ++
5 files changed, 25 insertions(+), 5 deletions(-)
--
2.48.1
More information about the Linux-nvme
mailing list