From: Christoph Hellwig <hch@lst.de>
To: Kanchan Joshi <joshi.k@samsung.com>
Cc: hch@lst.de, kbusch@kernel.org, linux-nvme@lists.infradead.org,
k.jensen@samsung.com, javier@javigon.com, j.granados@samsung.com
Subject: Re: [PATCH] nvme: enable generic interface (/dev/ngX) for unknown command sets
Date: Fri, 25 Mar 2022 17:20:58 +0100 [thread overview]
Message-ID: <20220325162058.GA16275@lst.de> (raw)
In-Reply-To: <20220325111444.5675-1-joshi.k@samsung.com>
On Fri, Mar 25, 2022 at 04:44:44PM +0530, Kanchan Joshi wrote:
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index 677fa4bf76d3..3e5d9a3f4167 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -1875,7 +1875,7 @@ static void nvme_set_chunk_sectors(struct nvme_ns *ns, struct nvme_id_ns *id)
> static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_id_ns *id)
> {
> unsigned lbaf = nvme_lbaf_index(id->flbas);
> - int ret;
> + int ret = 0;
>
> blk_mq_freeze_queue(ns->disk->queue);
> ns->lba_shift = id->lbaf[lbaf].ds;
nvme_update_ns_info can't really work for arbitrary command sets as
the concept of LBA sizes and format doesn't apply there. So we'll
need a different stubbed out version that doesn't deal with the
block interface at all.
> @@ -4098,6 +4100,14 @@ static void nvme_validate_or_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
> default:
> dev_warn(ctrl->device, "unknown csi %u for nsid %u\n",
> ids.csi, nsid);
> + if (!nvme_multi_css(ctrl)) {
> + dev_warn(ctrl->device,
> + "command set not reported for nsid: %d\n",
> + nsid);
> + break;
> + }
Given that the NVM command set has a CSI of 0 getting random garbage
here sounds unlikely. That being said if we want to support passthrough
for unknown command sets the warning above should probably go
away above as well.
> + /* required to enable char-interface for unknown command sets*/
> + nvme_alloc_ns(ctrl, nsid, &ids);
And this can't really work as nvme_alloc_ns looks at the Identify
Namespace structure for the NVM command set which can't really
work for arbitrary command sets. We'll need a nvme_alloc_ns_generic
instead that looks at the Command Set Independent Identify Namespace
structure for a few things like namespace sharing capability and
does just the basic work to get the passthrough interface up.
next prev parent reply other threads:[~2022-03-25 16:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20220325111952epcas5p4800055294fe473b923713d4b9c006026@epcas5p4.samsung.com>
2022-03-25 11:14 ` [PATCH] nvme: enable generic interface (/dev/ngX) for unknown command sets Kanchan Joshi
2022-03-25 16:20 ` Christoph Hellwig [this message]
2022-03-28 15:12 ` Kanchan Joshi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220325162058.GA16275@lst.de \
--to=hch@lst.de \
--cc=j.granados@samsung.com \
--cc=javier@javigon.com \
--cc=joshi.k@samsung.com \
--cc=k.jensen@samsung.com \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.