nvme-fabrics: Ignore nr_io_queues option for discovery controllers
PATCH v2 1/1 nvme-fabrics: Ignore nr_io_queues option for discovery controllers
From: Roland Dreier <[email protected]>
This removes a dependency on the order options are passed when creating a fabrics controller. With the old code, if "nr_io_queues" appears before an "nqn" option specifying the discovery controller, then nr_io_queues is overridden with zero. If "nr_io_queues" appears after specifying the discovery controller, then the nr_io_queues option is used to set the number of queues, and the driver attempts to establish IO connections to the discovery controller (which doesn't work).
It seems better to ignore (and warn about) the "nr_io_queues" option if userspace has already asked to connect to the discovery controller.
--- drivers/nvme/host/fabrics.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/nvme/host/fabrics.c +5 -0
@@ -650,6 +650,11 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts, ret = -EINVAL ; goto out; } +if (opts->discovery_nqn) { +pr_debug ("Ignoring nr_io_queues value for discovery controller\n" ); +break ; + } + opts->nr_io_queues = min_t(unsigned int,num_online_cpus (), token);break ;
Signature · 1 line
2.15.1
PATCH v2 1/1 nvme-fabrics: Ignore nr_io_queues option for discovery controllers
Quoted 24 lines · Roland Dreier
From: Roland Dreier <roland at purestorage.com>
This removes a dependency on the order options are passed when creating a fabrics controller. With the old code, if "
nr_io_queues" appears before an "nqn" option specifying the discovery controller, thennr_io_queuesis overridden with zero. If "nr_io_queues" appears after specifying the discovery controller, then thenr_io_queuesoption is used to set the number of queues, and the driver attempts to establish IO connections to the discovery controller (which doesn't work).It seems better to ignore (and warn about) the "
nr_io_queues" option if userspace has already asked to connect to the discovery controller.Signed-off-by Roland Dreier <roland at purestorage.com>--- drivers/nvme/host/fabrics.c | 5 +++++ 1 file changed, 5 insertions(+)drivers/nvme/host/fabrics.c +0
-0@@ -650,6 +650,11 @@ static int nvmf_parse_options(struct nvmf_ctrl_options *opts, ret = -EINVAL ;
drivers/nvme/host/fabrics.c static int nvmf_parse_options(struct nvmf_ctrl_options *opts, · line 660
Quoted 10 lines
drivers/nvme/host/fabrics.c +5
-0goto out; } +if (opts->discovery_nqn) { +pr_debug ("Ignoring nr_io_queues value for discovery controller\n" ); +break ; + } + opts->nr_io_queues = min_t(unsigned int,num_online_cpus (), token);break ;
-- james
Christoph Hellwig
maintainerPATCH v2 1/1 nvme-fabrics: Ignore nr_io_queues option for discovery controllers
In reply to Roland DreierLooks fine,
Keith Busch
AppliedPATCH v2 1/1 nvme-fabrics: Ignore nr_io_queues option for discovery controllers
Thanks, applied.