Commit e862c5a6 authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

nvme: move adminq creation to transport



Change-Id: Ieea86c9fdd7b4bc541eed2762e885368871ee4b5
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent ff386978
Loading
Loading
Loading
Loading
+0 −25
Original line number Diff line number Diff line
@@ -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);
+25 −0
Original line number Diff line number Diff line
@@ -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);
}