From e862c5a62144444d039fb6b62ee6342c16c82db7 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Wed, 19 Oct 2016 13:29:16 -0700 Subject: [PATCH] nvme: move adminq creation to transport Change-Id: Ieea86c9fdd7b4bc541eed2762e885368871ee4b5 Signed-off-by: Daniel Verkamp --- lib/nvme/nvme_ctrlr.c | 25 ------------------------- lib/nvme/nvme_pcie.c | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/lib/nvme/nvme_ctrlr.c b/lib/nvme/nvme_ctrlr.c index bd3ab7050..cf567ace7 100644 --- a/lib/nvme/nvme_ctrlr.c +++ b/lib/nvme/nvme_ctrlr.c @@ -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); diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index 6d21fdf76..a42ec2c31 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -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); }