mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
nvmet: implement active command set ns list
This is required for nvme 2.1 for targets that support multiple command sets. We support NVM and ZNS, so are required to support this identification. Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Matias Bjørling <matias.bjorling@wdc.com> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
64a51080ea
commit
61c9967cd6
|
|
@ -592,7 +592,7 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req)
|
|||
nvmet_req_complete(req, status);
|
||||
}
|
||||
|
||||
static void nvmet_execute_identify_nslist(struct nvmet_req *req)
|
||||
static void nvmet_execute_identify_nslist(struct nvmet_req *req, bool match_css)
|
||||
{
|
||||
static const int buf_size = NVME_IDENTIFY_DATA_SIZE;
|
||||
struct nvmet_ctrl *ctrl = req->sq->ctrl;
|
||||
|
|
@ -622,6 +622,8 @@ static void nvmet_execute_identify_nslist(struct nvmet_req *req)
|
|||
xa_for_each(&ctrl->subsys->namespaces, idx, ns) {
|
||||
if (ns->nsid <= min_nsid)
|
||||
continue;
|
||||
if (match_css && req->ns->csi != req->cmd->identify.csi)
|
||||
continue;
|
||||
list[i++] = cpu_to_le32(ns->nsid);
|
||||
if (i == buf_size / sizeof(__le32))
|
||||
break;
|
||||
|
|
@ -728,7 +730,7 @@ static void nvmet_execute_identify(struct nvmet_req *req)
|
|||
nvmet_execute_identify_ctrl(req);
|
||||
return;
|
||||
case NVME_ID_CNS_NS_ACTIVE_LIST:
|
||||
nvmet_execute_identify_nslist(req);
|
||||
nvmet_execute_identify_nslist(req, false);
|
||||
return;
|
||||
case NVME_ID_CNS_NS_DESC_LIST:
|
||||
nvmet_execute_identify_desclist(req);
|
||||
|
|
@ -759,6 +761,9 @@ static void nvmet_execute_identify(struct nvmet_req *req)
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case NVME_ID_CNS_NS_ACTIVE_LIST_CS:
|
||||
nvmet_execute_identify_nslist(req, true);
|
||||
return;
|
||||
}
|
||||
|
||||
pr_debug("unhandled identify cns %d on qid %d\n",
|
||||
|
|
|
|||
|
|
@ -522,6 +522,7 @@ enum {
|
|||
NVME_ID_CNS_NS_DESC_LIST = 0x03,
|
||||
NVME_ID_CNS_CS_NS = 0x05,
|
||||
NVME_ID_CNS_CS_CTRL = 0x06,
|
||||
NVME_ID_CNS_NS_ACTIVE_LIST_CS = 0x07,
|
||||
NVME_ID_CNS_NS_CS_INDEP = 0x08,
|
||||
NVME_ID_CNS_NS_PRESENT_LIST = 0x10,
|
||||
NVME_ID_CNS_NS_PRESENT = 0x11,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user