nvme: add a csi parameter to nvme_ctrlr_cmd_identify()
With the introduction of namespace types, the identify command has gained an additional parameter: Command Set Identifier (CSI). This parameter is similar to the existing parameters NSID and CNTID, and is not used by all CNS values. Most notably, the CSI parameter is not used for the existing CNS values 00h (ID NS) and 01h (ID CTRL). There are new CNS values, e.g. 05h (ID IOCS specific NS), and 06h (ID IOCS specific CTRL), which do take the new CSI parameter. The new CNS values instead return Command Set Specific data structures, which is basically an additional data structure. Therefore, the CNS values 00h and 01h are very much still in use. (Even the NVM Command Set has a Command Set Specific data structure, even though all fields in that data structure are currently reserved.) Since the CSI parameter is unused by all the existing calls to nvme_ctrlr_cmd_identify() (since none of the calls send in a CNS value that uses CSI), simply send in 0 for all existing calls. No functional change intended. Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com> Change-Id: Ia2b2324393a0707152b2f8511f0a22ad4a12bd46 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4309 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
6ca498c197
commit
d1db020954
lib/nvme
test/unit/lib/nvme
@ -1394,7 +1394,7 @@ nvme_ctrlr_identify(struct spdk_nvme_ctrlr *ctrlr)
|
||||
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_WAIT_FOR_IDENTIFY,
|
||||
ctrlr->opts.admin_timeout_ms);
|
||||
|
||||
rc = nvme_ctrlr_cmd_identify(ctrlr, SPDK_NVME_IDENTIFY_CTRLR, 0, 0,
|
||||
rc = nvme_ctrlr_cmd_identify(ctrlr, SPDK_NVME_IDENTIFY_CTRLR, 0, 0, 0,
|
||||
&ctrlr->cdata, sizeof(ctrlr->cdata),
|
||||
nvme_ctrlr_identify_done, ctrlr);
|
||||
if (rc != 0) {
|
||||
@ -1524,7 +1524,7 @@ nvme_ctrlr_identify_active_ns_async(struct nvme_active_ns_ctx *ctx)
|
||||
}
|
||||
|
||||
ctx->state = NVME_ACTIVE_NS_STATE_PROCESSING;
|
||||
rc = nvme_ctrlr_cmd_identify(ctrlr, SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST, 0, ctx->next_nsid,
|
||||
rc = nvme_ctrlr_cmd_identify(ctrlr, SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST, 0, ctx->next_nsid, 0,
|
||||
&ctx->new_ns_list[1024 * ctx->page], sizeof(struct spdk_nvme_ns_list),
|
||||
nvme_ctrlr_identify_active_ns_async_done, ctx);
|
||||
if (rc != 0) {
|
||||
@ -1648,7 +1648,7 @@ nvme_ctrlr_identify_ns_async(struct spdk_nvme_ns *ns)
|
||||
|
||||
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_WAIT_FOR_IDENTIFY_NS,
|
||||
ctrlr->opts.admin_timeout_ms);
|
||||
return nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS, 0, ns->id,
|
||||
return nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS, 0, ns->id, 0,
|
||||
nsdata, sizeof(*nsdata),
|
||||
nvme_ctrlr_identify_ns_async_done, ns);
|
||||
}
|
||||
@ -1721,7 +1721,7 @@ nvme_ctrlr_identify_id_desc_async(struct spdk_nvme_ns *ns)
|
||||
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_WAIT_FOR_IDENTIFY_ID_DESCS,
|
||||
ctrlr->opts.admin_timeout_ms);
|
||||
return nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST,
|
||||
0, ns->id, ns->id_desc_list, sizeof(ns->id_desc_list),
|
||||
0, ns->id, 0, ns->id_desc_list, sizeof(ns->id_desc_list),
|
||||
nvme_ctrlr_identify_id_desc_async_done, ns);
|
||||
}
|
||||
|
||||
|
@ -135,7 +135,7 @@ spdk_nvme_ctrlr_cmd_admin_raw(struct spdk_nvme_ctrlr *ctrlr,
|
||||
|
||||
int
|
||||
nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cntid, uint32_t nsid,
|
||||
void *payload, size_t payload_size,
|
||||
uint8_t csi, void *payload, size_t payload_size,
|
||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg)
|
||||
{
|
||||
struct nvme_request *req;
|
||||
@ -152,6 +152,7 @@ nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cnt
|
||||
cmd->opc = SPDK_NVME_OPC_IDENTIFY;
|
||||
cmd->cdw10_bits.identify.cns = cns;
|
||||
cmd->cdw10_bits.identify.cntid = cntid;
|
||||
cmd->cdw11_bits.identify.csi = csi;
|
||||
cmd->nsid = nsid;
|
||||
|
||||
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||
|
@ -306,7 +306,7 @@ nvme_fabric_ctrlr_scan(struct spdk_nvme_probe_ctx *probe_ctx,
|
||||
}
|
||||
|
||||
/* get the cdata info */
|
||||
rc = nvme_ctrlr_cmd_identify(discovery_ctrlr, SPDK_NVME_IDENTIFY_CTRLR, 0, 0,
|
||||
rc = nvme_ctrlr_cmd_identify(discovery_ctrlr, SPDK_NVME_IDENTIFY_CTRLR, 0, 0, 0,
|
||||
&discovery_ctrlr->cdata, sizeof(discovery_ctrlr->cdata),
|
||||
nvme_completion_poll_cb, status);
|
||||
if (rc != 0) {
|
||||
|
@ -865,7 +865,7 @@ int nvme_poll_group_disconnect_qpair(struct spdk_nvme_qpair *qpair);
|
||||
/* Admin functions */
|
||||
int nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr,
|
||||
uint8_t cns, uint16_t cntid, uint32_t nsid,
|
||||
void *payload, size_t payload_size,
|
||||
uint8_t csi, void *payload, size_t payload_size,
|
||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg);
|
||||
int nvme_ctrlr_cmd_set_num_queues(struct spdk_nvme_ctrlr *ctrlr,
|
||||
uint32_t num_queues, spdk_nvme_cmd_cb cb_fn,
|
||||
|
@ -124,7 +124,7 @@ nvme_ctrlr_identify_ns(struct spdk_nvme_ns *ns)
|
||||
}
|
||||
|
||||
nsdata = _nvme_ns_get_data(ns);
|
||||
rc = nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS, 0, ns->id,
|
||||
rc = nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS, 0, ns->id, 0,
|
||||
nsdata, sizeof(*nsdata),
|
||||
nvme_completion_poll_cb, status);
|
||||
if (rc != 0) {
|
||||
@ -172,7 +172,7 @@ nvme_ctrlr_identify_id_desc(struct spdk_nvme_ns *ns)
|
||||
|
||||
SPDK_DEBUGLOG(SPDK_LOG_NVME, "Attempting to retrieve NS ID Descriptor List\n");
|
||||
rc = nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST, 0, ns->id,
|
||||
ns->id_desc_list, sizeof(ns->id_desc_list),
|
||||
0, ns->id_desc_list, sizeof(ns->id_desc_list),
|
||||
nvme_completion_poll_cb, status);
|
||||
if (rc < 0) {
|
||||
free(status);
|
||||
|
@ -335,7 +335,7 @@ nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr,
|
||||
|
||||
int
|
||||
nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cntid, uint32_t nsid,
|
||||
void *payload, size_t payload_size,
|
||||
uint8_t csi, void *payload, size_t payload_size,
|
||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg)
|
||||
{
|
||||
if (cns == SPDK_NVME_IDENTIFY_ACTIVE_NS_LIST) {
|
||||
|
@ -48,7 +48,7 @@ DEFINE_STUB(nvme_wait_for_completion_robust_lock, int,
|
||||
|
||||
int
|
||||
nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cntid, uint32_t nsid,
|
||||
void *payload, size_t payload_size,
|
||||
uint8_t csi, void *payload, size_t payload_size,
|
||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg)
|
||||
{
|
||||
return -1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user