[PATCH v2] nvme-fabrics: Ignore nr_io_queues option for discovery controllers

James Smart james.smart at broadcom.com
Mon Mar 5 12:55:55 PST 2018


On 3/5/2018 11:59 AM, Roland Dreier wrote:
> 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, 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.
>
> Signed-off-by: Roland Dreier <roland at purestorage.com>
> ---
>   drivers/nvme/host/fabrics.c | 5 +++++
>   1 file changed, 5 insertions(+)
>
> diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
> index 5dd4ceefed8f..6ec6b13fa582 100644
> --- a/drivers/nvme/host/fabrics.c
> +++ b/drivers/nvme/host/fabrics.c
> @@ -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;

Reviewed-by: James Smart <james.smart at broadcom.com>

-- james



More information about the Linux-nvme mailing list