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:
parent
3a8852d384
commit
6005775622
@ -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 {
|
||||
/*
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user