[PATCH 2/4] nvme-multipath: add the NVME_MULTIPATH_PARAM config option

From: John Meneghini
Date: Thu Feb 27 2025 - 22:26:30 EST


The NVME_MULTIPATH_PARAM option controls the core.nvme_multipath module
parameter. When NVME_MULTIPATH_PARAM=n the multipath parameter is removed
and core nvme multipathing is enabled. When NVME_MULTIPATH_PARAM=y
the multipath parameter is added and multipath support becomes
configurable with the core.nvme_multipath parameter.

By default NVME_MULTIPATH_PARAM=y

Signed-off-by: John Meneghini <jmeneghi@xxxxxxxxxx>
---
drivers/nvme/host/Kconfig | 15 +++++++++++++++
drivers/nvme/host/multipath.c | 3 ++-
2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/nvme/host/Kconfig b/drivers/nvme/host/Kconfig
index 91b0346ce65a..c4251504f201 100644
--- a/drivers/nvme/host/Kconfig
+++ b/drivers/nvme/host/Kconfig
@@ -28,6 +28,21 @@ config NVME_MULTIPATH

If unsure, say Y.

+config NVME_MULTIPATH_PARAM
+ bool "NVMe multipath param"
+ depends on NVME_CORE && NVME_MULTIPATH
+ help
+ This option enables configurable support for multipath access with
+ NVMe subsystems. If this option is enabled NVMe multipath support is
+ configured by the nvme core module parameter named "multipath". If
+ this option is disabled the nvme core module "multipath" parameter
+ is removed and support for NVMe multipath access can not be
+ configured. When this option is disabled a single /dev/nvmeXnY
+ device entry will be seen for each NVMe namespace, even if the
+ namespace is accessible through multiple controllers.
+
+ If unsure, say Y.
+
config NVME_VERBOSE_ERRORS
bool "NVMe verbose error reporting"
depends on NVME_CORE
diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
index 2a7635565083..4536ad5fbb82 100644
--- a/drivers/nvme/host/multipath.c
+++ b/drivers/nvme/host/multipath.c
@@ -10,10 +10,11 @@
#include "nvme.h"

bool multipath = true;
+#ifdef NVME_MULTIPATH_PARAM
module_param(multipath, bool, 0444);
MODULE_PARM_DESC(multipath,
"turn on native support for multiple controllers per subsystem");
-
+#endif
static const char *nvme_iopolicy_names[] = {
[NVME_IOPOLICY_NUMA] = "numa",
[NVME_IOPOLICY_RR] = "round-robin",
--
2.48.1