nvme: move adminq creation to transport
Change-Id: Ieea86c9fdd7b4bc541eed2762e885368871ee4b5 Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
ff3869789a
commit
e862c5a621
@ -286,20 +286,6 @@ nvme_ctrlr_set_supported_features(struct spdk_nvme_ctrlr *ctrlr)
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
nvme_ctrlr_construct_admin_qpair(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
ctrlr->adminq = spdk_zmalloc(sizeof(struct spdk_nvme_qpair), 64, NULL);
|
||||
if (ctrlr->adminq == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return nvme_qpair_construct(ctrlr->adminq,
|
||||
0, /* qpair ID */
|
||||
NVME_ADMIN_ENTRIES,
|
||||
ctrlr);
|
||||
}
|
||||
|
||||
static void
|
||||
nvme_ctrlr_fail(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
@ -903,18 +889,12 @@ nvme_mutex_init_recursive_shared(pthread_mutex_t *mtx)
|
||||
int
|
||||
nvme_ctrlr_construct(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
int rc;
|
||||
|
||||
nvme_ctrlr_set_state(ctrlr, NVME_CTRLR_STATE_INIT, NVME_TIMEOUT_INFINITE);
|
||||
ctrlr->flags = 0;
|
||||
ctrlr->free_io_qids = NULL;
|
||||
|
||||
ctrlr->min_page_size = 1 << (12 + ctrlr->cap.bits.mpsmin);
|
||||
|
||||
rc = nvme_ctrlr_construct_admin_qpair(ctrlr);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
ctrlr->is_resetting = false;
|
||||
ctrlr->is_failed = false;
|
||||
|
||||
@ -941,11 +921,6 @@ nvme_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr)
|
||||
|
||||
spdk_bit_array_free(&ctrlr->free_io_qids);
|
||||
|
||||
if (ctrlr->adminq) {
|
||||
nvme_qpair_destroy(ctrlr->adminq);
|
||||
spdk_free(ctrlr->adminq);
|
||||
}
|
||||
|
||||
pthread_mutex_destroy(&ctrlr->ctrlr_lock);
|
||||
|
||||
ctrlr->transport->ctrlr_destruct(ctrlr);
|
||||
|
@ -299,6 +299,20 @@ nvme_pcie_ctrlr_free_bars(struct nvme_pcie_ctrlr *pctrlr)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int
|
||||
nvme_pcie_ctrlr_construct_admin_qpair(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
ctrlr->adminq = spdk_zmalloc(sizeof(struct spdk_nvme_qpair), 64, NULL);
|
||||
if (ctrlr->adminq == NULL) {
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return nvme_qpair_construct(ctrlr->adminq,
|
||||
0, /* qpair ID */
|
||||
NVME_ADMIN_ENTRIES,
|
||||
ctrlr);
|
||||
}
|
||||
|
||||
static struct spdk_nvme_ctrlr *nvme_pcie_ctrlr_construct(void *devhandle)
|
||||
{
|
||||
struct spdk_pci_device *pci_dev = devhandle;
|
||||
@ -351,6 +365,12 @@ static struct spdk_nvme_ctrlr *nvme_pcie_ctrlr_construct(void *devhandle)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rc = nvme_pcie_ctrlr_construct_admin_qpair(&pctrlr->ctrlr);
|
||||
if (rc != 0) {
|
||||
nvme_ctrlr_destruct(&pctrlr->ctrlr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return &pctrlr->ctrlr;
|
||||
}
|
||||
|
||||
@ -388,6 +408,11 @@ nvme_pcie_ctrlr_destruct(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
struct nvme_pcie_ctrlr *pctrlr = nvme_pcie_ctrlr(ctrlr);
|
||||
|
||||
if (ctrlr->adminq) {
|
||||
nvme_qpair_destroy(ctrlr->adminq);
|
||||
spdk_free(ctrlr->adminq);
|
||||
}
|
||||
|
||||
nvme_pcie_ctrlr_free_bars(pctrlr);
|
||||
spdk_free(pctrlr);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user