nvme: Move nsdata_zns to namespace structure

Signed-off-by: Evgeniy Kochetov <evgeniik@nvidia.com>
Change-Id: I3f7508d14075c23d9b850da20da6d86c36e08450
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6501
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Evgeniy Kochetov 2020-11-23 19:11:12 +02:00 committed by Tomasz Zawadzki
parent 3a8852d384
commit 6005775622
4 changed files with 18 additions and 36 deletions

View File

@ -2087,7 +2087,6 @@ static int
nvme_ctrlr_identify_ns_iocs_specific_async(struct spdk_nvme_ns *ns)
{
struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
struct spdk_nvme_zns_ns_data **nsdata_zns;
int rc;
switch (ns->csi) {
@ -2102,19 +2101,17 @@ nvme_ctrlr_identify_ns_iocs_specific_async(struct spdk_nvme_ns *ns)
assert(0);
}
assert(ctrlr->nsdata_zns);
nsdata_zns = &ctrlr->nsdata_zns[ns->id - 1];
assert(!*nsdata_zns);
*nsdata_zns = spdk_zmalloc(sizeof(**nsdata_zns), 64, NULL, SPDK_ENV_SOCKET_ID_ANY,
SPDK_MALLOC_SHARE | SPDK_MALLOC_DMA);
if (!*nsdata_zns) {
assert(!ns->nsdata_zns);
ns->nsdata_zns = spdk_zmalloc(sizeof(*ns->nsdata_zns), 64, NULL, SPDK_ENV_SOCKET_ID_ANY,
SPDK_MALLOC_SHARE);
if (!ns->nsdata_zns) {
return -ENOMEM;
}
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_WAIT_FOR_IDENTIFY_NS_IOCS_SPECIFIC,
ctrlr->opts.admin_timeout_ms);
rc = nvme_ctrlr_cmd_identify(ns->ctrlr, SPDK_NVME_IDENTIFY_NS_IOCS, 0, ns->id, ns->csi,
*nsdata_zns, sizeof(**nsdata_zns),
ns->nsdata_zns, sizeof(*ns->nsdata_zns),
nvme_ctrlr_identify_ns_zns_specific_async_done, ns);
if (rc) {
nvme_ns_free_zns_specific_data(ns);
@ -2477,10 +2474,6 @@ nvme_ctrlr_destruct_namespaces(struct spdk_nvme_ctrlr *ctrlr)
ctrlr->num_ns = 0;
}
spdk_free(ctrlr->nsdata_zns);
ctrlr->nsdata_zns = NULL;
spdk_free(ctrlr->active_ns_list);
ctrlr->active_ns_list = NULL;
}
@ -2545,13 +2538,6 @@ nvme_ctrlr_construct_namespaces(struct spdk_nvme_ctrlr *ctrlr)
goto fail;
}
ctrlr->nsdata_zns = spdk_zmalloc(nn * sizeof(struct spdk_nvme_zns_ns_data *), 64,
NULL, SPDK_ENV_SOCKET_ID_ANY, SPDK_MALLOC_SHARE);
if (ctrlr->nsdata_zns == NULL) {
rc = -ENOMEM;
goto fail;
}
ctrlr->num_ns = nn;
} else {
/*

View File

@ -497,6 +497,9 @@ struct spdk_nvme_ns {
/* Identify Namespace data. */
struct spdk_nvme_ns_data nsdata;
/* Zoned Namespace Command Set Specific Identify Namespace data. */
struct spdk_nvme_zns_ns_data *nsdata_zns;
};
/**
@ -814,11 +817,6 @@ struct spdk_nvme_ctrlr {
*/
uint32_t *active_ns_list;
/**
* Array of pointers to Zoned Namespace Command Set Specific Identify Namespace data.
*/
struct spdk_nvme_zns_ns_data **nsdata_zns;
struct spdk_bit_array *free_io_qids;
TAILQ_HEAD(, spdk_nvme_qpair) active_io_qpairs;

View File

@ -155,7 +155,6 @@ nvme_ctrlr_identify_ns_iocs_specific(struct spdk_nvme_ns *ns)
{
struct nvme_completion_poll_status *status;
struct spdk_nvme_ctrlr *ctrlr = ns->ctrlr;
struct spdk_nvme_zns_ns_data **nsdata_zns;
int rc;
switch (ns->csi) {
@ -170,12 +169,10 @@ nvme_ctrlr_identify_ns_iocs_specific(struct spdk_nvme_ns *ns)
assert(0);
}
assert(ctrlr->nsdata_zns);
nsdata_zns = &ctrlr->nsdata_zns[ns->id - 1];
assert(!*nsdata_zns);
*nsdata_zns = spdk_zmalloc(sizeof(**nsdata_zns), 64, NULL, SPDK_ENV_SOCKET_ID_ANY,
SPDK_MALLOC_SHARE | SPDK_MALLOC_DMA);
if (!*nsdata_zns) {
assert(!ns->nsdata_zns);
ns->nsdata_zns = spdk_zmalloc(sizeof(*ns->nsdata_zns), 64, NULL, SPDK_ENV_SOCKET_ID_ANY,
SPDK_MALLOC_SHARE);
if (!ns->nsdata_zns) {
return -ENOMEM;
}
@ -187,7 +184,7 @@ nvme_ctrlr_identify_ns_iocs_specific(struct spdk_nvme_ns *ns)
}
rc = nvme_ctrlr_cmd_identify(ctrlr, SPDK_NVME_IDENTIFY_NS_IOCS, 0, ns->id, ns->csi,
*nsdata_zns, sizeof(**nsdata_zns),
ns->nsdata_zns, sizeof(*ns->nsdata_zns),
nvme_completion_poll_cb, status);
if (rc != 0) {
nvme_ns_free_zns_specific_data(ns);
@ -463,9 +460,9 @@ nvme_ns_free_zns_specific_data(struct spdk_nvme_ns *ns)
return;
}
if (ns->ctrlr->nsdata_zns) {
spdk_free(ns->ctrlr->nsdata_zns[ns->id - 1]);
ns->ctrlr->nsdata_zns[ns->id - 1] = NULL;
if (ns->nsdata_zns) {
spdk_free(ns->nsdata_zns);
ns->nsdata_zns = NULL;
}
}

View File

@ -2,6 +2,7 @@
* BSD LICENSE
*
* Copyright (c) 2020, Western Digital Corporation. All rights reserved.
* Copyright (c) 2021 Mellanox Technologies LTD. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@ -36,7 +37,7 @@
const struct spdk_nvme_zns_ns_data *
spdk_nvme_zns_ns_get_data(struct spdk_nvme_ns *ns)
{
return ns->ctrlr->nsdata_zns[ns->id - 1];
return ns->nsdata_zns;
}
uint64_t