From: Kanchan Joshi <joshi.k@samsung.com>
To: hch@lst.de, kbusch@kernel.org
Cc: linux-nvme@lists.infradead.org, k.jensen@samsung.com,
javier@javigon.com, j.granados@samsung.com
Subject: [PATCH] nvme: enable generic interface (/dev/ngX) for unknown command sets
Date: Fri, 25 Mar 2022 16:44:44 +0530 [thread overview]
Message-ID: <20220325111444.5675-1-joshi.k@samsung.com> (raw)
In-Reply-To: CGME20220325111952epcas5p4800055294fe473b923713d4b9c006026@epcas5p4.samsung.com
block and char interface do not show up for any command set other than
NVM and ZNS.
Allow namespace setup to take place, and char interface to come up for
unknown command sets. Hide the block-interface for such command sets.
Suggested-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
---
This is prepared against linux-block/for-next.
On top of commit e529e21f317 ("Merge branch 'for-5.18/io_uring' into for-next")
drivers/nvme/host/core.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
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;
@@ -1885,11 +1885,13 @@ static int nvme_update_ns_info(struct nvme_ns *ns, struct nvme_id_ns *id)
nvme_set_chunk_sectors(ns, id);
nvme_update_disk_info(ns->disk, ns, id);
- if (ns->head->ids.csi == NVME_CSI_ZNS) {
+ if (ns->head->ids.csi == NVME_CSI_ZNS)
ret = nvme_update_zone_info(ns, lbaf);
- if (ret)
- goto out_unfreeze;
- }
+ else if (ns->head->ids.csi != NVME_CSI_NVM)
+ /* suppress block-interface for unknown command-sets */
+ ret = -ENODEV;
+ if (ret)
+ goto out_unfreeze;
set_bit(NVME_NS_READY, &ns->flags);
blk_mq_unfreeze_queue(ns->disk->queue);
@@ -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;
+ }
+ /* required to enable char-interface for unknown command sets*/
+ nvme_alloc_ns(ctrl, nsid, &ids);
break;
}
}
--
2.25.1
next parent reply other threads:[~2022-03-25 11:24 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 ` Kanchan Joshi [this message]
2022-03-25 16:20 ` [PATCH] nvme: enable generic interface (/dev/ngX) for unknown command sets Christoph Hellwig
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=20220325111444.5675-1-joshi.k@samsung.com \
--to=joshi.k@samsung.com \
--cc=hch@lst.de \
--cc=j.granados@samsung.com \
--cc=javier@javigon.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox