[PATCH 2/3] nvmet: prevent creating ctrl with no namespace
Sagi Grimberg
sagi at grimberg.me
Thu Jun 17 12:06:11 PDT 2021
> From Spec :-
>
> If the controller supports Asymmetric Namespace Access Reporting, then
> MNAN shall be set to a non-zero value that is less than or equal
> to the NN value.
>
> In current implementation if subsys has 0 namespaces then we report
> wrong MNAN value for the controller if we allow controller creation.
>
> Prevent new controller creation if the subsys associated with the new
> controller has no namespaces.
This is a perfectly valid thing to do, preventing this is not the
solution here.
Why not just set both nn and mnan to NVMET_MAX_NAMESPACES and be done
with it?
>
> Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni at wdc.com>
> ---
> drivers/nvme/target/core.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
> index 146909486b8f..26d93ac9bd2e 100644
> --- a/drivers/nvme/target/core.c
> +++ b/drivers/nvme/target/core.c
> @@ -1325,6 +1325,15 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn,
> goto out;
> }
>
> + mutex_lock(&subsys->lock);
> + if (!subsys->max_nsid) {
> + mutex_unlock(&subsys->lock);
> + pr_err("invalid mnan value for the ana enabled controller\n");
> + status = NVME_SC_INTERNAL;
> + goto out_put_subsystem;
> + }
> + mutex_unlock(&subsys->lock);
> +
> down_read(&nvmet_config_sem);
> if (!nvmet_host_allowed(subsys, hostnqn)) {
> pr_info("connect by host %s for subsystem %s not allowed\n",
>
More information about the Linux-nvme
mailing list