nvme: Use log library instead of nvme_printf

Change-Id: Ic9b2db9bff3a914b3e5021695287157f1e076f9f
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Ben Walker 2016-08-12 09:03:40 -07:00
parent 9e33504370
commit b0e349a804
26 changed files with 124 additions and 166 deletions

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -46,7 +46,8 @@ LDFLAGS += -shared -rdynamic
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -144,7 +144,7 @@ blockdev_nvme_read(struct nvme_blockdev *nbdev, struct spdk_io_channel *ch,
struct nvme_io_channel *nvme_ch = spdk_io_channel_get_ctx(ch); struct nvme_io_channel *nvme_ch = spdk_io_channel_get_ctx(ch);
int64_t rc; int64_t rc;
SPDK_TRACELOG(SPDK_TRACE_NVME, "read %lu bytes with offset %#lx to %p\n", SPDK_TRACELOG(SPDK_TRACE_BDEV_NVME, "read %lu bytes with offset %#lx to %p\n",
nbytes, offset, buf); nbytes, offset, buf);
rc = nvme_queue_cmd(nbdev, nvme_ch->qpair, bio, BDEV_DISK_READ, buf, nbytes, offset); rc = nvme_queue_cmd(nbdev, nvme_ch->qpair, bio, BDEV_DISK_READ, buf, nbytes, offset);
@ -165,7 +165,7 @@ blockdev_nvme_writev(struct nvme_blockdev *nbdev, struct spdk_io_channel *ch,
if ((iovcnt != 1) || (iov->iov_len != len)) if ((iovcnt != 1) || (iov->iov_len != len))
return -1; return -1;
SPDK_TRACELOG(SPDK_TRACE_NVME, "write %lu bytes with offset %#lx from %p\n", SPDK_TRACELOG(SPDK_TRACE_BDEV_NVME, "write %lu bytes with offset %#lx from %p\n",
iov->iov_len, offset, iov->iov_base); iov->iov_len, offset, iov->iov_base);
rc = nvme_queue_cmd(nbdev, nvme_ch->qpair, bio, BDEV_DISK_WRITE, (void *)iov->iov_base, rc = nvme_queue_cmd(nbdev, nvme_ch->qpair, bio, BDEV_DISK_WRITE, (void *)iov->iov_base,
@ -715,4 +715,4 @@ blockdev_nvme_get_spdk_running_config(FILE *fp)
} }
} }
SPDK_LOG_REGISTER_TRACE_FLAG("nvme", SPDK_TRACE_NVME) SPDK_LOG_REGISTER_TRACE_FLAG("bdev_nvme", SPDK_TRACE_BDEV_NVME)

View File

@ -54,7 +54,7 @@ nvme_attach(void *devhandle)
ctrlr = nvme_malloc("nvme_ctrlr", sizeof(struct spdk_nvme_ctrlr), ctrlr = nvme_malloc("nvme_ctrlr", sizeof(struct spdk_nvme_ctrlr),
64, &phys_addr); 64, &phys_addr);
if (ctrlr == NULL) { if (ctrlr == NULL) {
nvme_printf(NULL, "could not allocate ctrlr\n"); SPDK_ERRLOG("could not allocate ctrlr\n");
return NULL; return NULL;
} }
@ -256,7 +256,7 @@ nvme_enum_cb(void *ctx, struct spdk_pci_device *pci_dev)
if (enum_ctx->probe_cb(enum_ctx->cb_ctx, pci_dev, &opts)) { if (enum_ctx->probe_cb(enum_ctx->cb_ctx, pci_dev, &opts)) {
ctrlr = nvme_attach(pci_dev); ctrlr = nvme_attach(pci_dev);
if (ctrlr == NULL) { if (ctrlr == NULL) {
nvme_printf(NULL, "nvme_attach() failed\n"); SPDK_ERRLOG("nvme_attach() failed\n");
return -1; return -1;
} }
@ -282,7 +282,7 @@ spdk_nvme_probe(void *cb_ctx, spdk_nvme_probe_cb probe_cb, spdk_nvme_attach_cb a
g_spdk_nvme_driver->request_mempool = nvme_mempool_create("nvme_request", 8192, g_spdk_nvme_driver->request_mempool = nvme_mempool_create("nvme_request", 8192,
sizeof(struct nvme_request), 128); sizeof(struct nvme_request), 128);
if (g_spdk_nvme_driver->request_mempool == NULL) { if (g_spdk_nvme_driver->request_mempool == NULL) {
nvme_printf(NULL, "Unable to allocate pool of requests\n"); SPDK_ERRLOG("Unable to allocate pool of requests\n");
pthread_mutex_unlock(&g_spdk_nvme_driver->lock); pthread_mutex_unlock(&g_spdk_nvme_driver->lock);
return -1; return -1;
} }
@ -345,3 +345,5 @@ spdk_nvme_probe(void *cb_ctx, spdk_nvme_probe_cb probe_cb, spdk_nvme_attach_cb a
pthread_mutex_unlock(&g_spdk_nvme_driver->lock); pthread_mutex_unlock(&g_spdk_nvme_driver->lock);
return rc; return rc;
} }
SPDK_LOG_REGISTER_TRACE_FLAG("nvme", SPDK_TRACE_NVME)

View File

@ -62,7 +62,7 @@ spdk_nvme_ctrlr_create_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpa
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0); spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_create_io_cq failed!\n"); SPDK_ERRLOG("nvme_create_io_cq failed!\n");
return -1; return -1;
} }
@ -76,7 +76,7 @@ spdk_nvme_ctrlr_create_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpa
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0); spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_create_io_sq failed!\n"); SPDK_ERRLOG("nvme_create_io_sq failed!\n");
/* Attempt to delete the completion queue */ /* Attempt to delete the completion queue */
status.done = false; status.done = false;
rc = nvme_ctrlr_cmd_delete_io_cq(qpair->ctrlr, qpair, nvme_completion_poll_cb, &status); rc = nvme_ctrlr_cmd_delete_io_cq(qpair->ctrlr, qpair, nvme_completion_poll_cb, &status);
@ -113,8 +113,7 @@ spdk_nvme_ctrlr_alloc_io_qpair(struct spdk_nvme_ctrlr *ctrlr,
* default round robin arbitration method. * default round robin arbitration method.
*/ */
if ((cc.bits.ams == SPDK_NVME_CC_AMS_RR) && (qprio != SPDK_NVME_QPRIO_URGENT)) { if ((cc.bits.ams == SPDK_NVME_CC_AMS_RR) && (qprio != SPDK_NVME_QPRIO_URGENT)) {
nvme_printf(ctrlr, SPDK_ERRLOG("invalid queue priority for default round robin arbitration method\n");
"invalid queue priority for default round robin arbitration method\n");
return NULL; return NULL;
} }
@ -252,7 +251,7 @@ static int nvme_ctrlr_set_intel_support_log_pages(struct spdk_nvme_ctrlr *ctrlr)
sizeof(struct spdk_nvme_intel_log_page_directory), sizeof(struct spdk_nvme_intel_log_page_directory),
64, &phys_addr); 64, &phys_addr);
if (log_page_directory == NULL) { if (log_page_directory == NULL) {
nvme_printf(NULL, "could not allocate log_page_directory\n"); SPDK_ERRLOG("could not allocate log_page_directory\n");
return -ENXIO; return -ENXIO;
} }
@ -266,7 +265,7 @@ static int nvme_ctrlr_set_intel_support_log_pages(struct spdk_nvme_ctrlr *ctrlr)
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_free(log_page_directory); nvme_free(log_page_directory);
nvme_printf(ctrlr, "nvme_ctrlr_cmd_get_log_page failed!\n"); SPDK_ERRLOG("nvme_ctrlr_cmd_get_log_page failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -443,7 +442,7 @@ nvme_ctrlr_shutdown(struct spdk_nvme_ctrlr *ctrlr)
break; break;
} }
if (csts.bits.shst != SPDK_NVME_SHST_COMPLETE) if (csts.bits.shst != SPDK_NVME_SHST_COMPLETE)
nvme_printf(ctrlr, "did not shutdown within 5 seconds\n"); SPDK_ERRLOG("did not shutdown within 5 seconds\n");
} }
static int static int
@ -456,7 +455,7 @@ nvme_ctrlr_enable(struct spdk_nvme_ctrlr *ctrlr)
cc.raw = nvme_mmio_read_4(ctrlr, cc.raw); cc.raw = nvme_mmio_read_4(ctrlr, cc.raw);
if (cc.bits.en != 0) { if (cc.bits.en != 0) {
nvme_printf(ctrlr, "%s called with CC.EN = 1\n", __func__); SPDK_ERRLOG("%s called with CC.EN = 1\n", __func__);
return -EINVAL; return -EINVAL;
} }
@ -537,7 +536,7 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
ctrlr->is_resetting = true; ctrlr->is_resetting = true;
nvme_printf(ctrlr, "resetting controller\n"); SPDK_NOTICELOG("resetting controller\n");
/* Disable all queues before disabling the controller hardware. */ /* Disable all queues before disabling the controller hardware. */
nvme_qpair_disable(&ctrlr->adminq); nvme_qpair_disable(&ctrlr->adminq);
@ -550,7 +549,7 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
while (ctrlr->state != NVME_CTRLR_STATE_READY) { while (ctrlr->state != NVME_CTRLR_STATE_READY) {
if (nvme_ctrlr_process_init(ctrlr) != 0) { if (nvme_ctrlr_process_init(ctrlr) != 0) {
nvme_printf(ctrlr, "%s: controller reinitialization failed\n", __func__); SPDK_ERRLOG("%s: controller reinitialization failed\n", __func__);
nvme_ctrlr_fail(ctrlr); nvme_ctrlr_fail(ctrlr);
rc = -1; rc = -1;
break; break;
@ -591,7 +590,7 @@ nvme_ctrlr_identify(struct spdk_nvme_ctrlr *ctrlr)
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0); spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_identify_controller failed!\n"); SPDK_ERRLOG("nvme_identify_controller failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -618,11 +617,11 @@ nvme_ctrlr_set_num_qpairs(struct spdk_nvme_ctrlr *ctrlr)
status.done = false; status.done = false;
if (ctrlr->opts.num_io_queues > SPDK_NVME_MAX_IO_QUEUES) { if (ctrlr->opts.num_io_queues > SPDK_NVME_MAX_IO_QUEUES) {
nvme_printf(ctrlr, "Limiting requested num_io_queues %u to max %d\n", SPDK_NOTICELOG("Limiting requested num_io_queues %u to max %d\n",
ctrlr->opts.num_io_queues, SPDK_NVME_MAX_IO_QUEUES); ctrlr->opts.num_io_queues, SPDK_NVME_MAX_IO_QUEUES);
ctrlr->opts.num_io_queues = SPDK_NVME_MAX_IO_QUEUES; ctrlr->opts.num_io_queues = SPDK_NVME_MAX_IO_QUEUES;
} else if (ctrlr->opts.num_io_queues < 1) { } else if (ctrlr->opts.num_io_queues < 1) {
nvme_printf(ctrlr, "Requested num_io_queues 0, increasing to 1\n"); SPDK_NOTICELOG("Requested num_io_queues 0, increasing to 1\n");
ctrlr->opts.num_io_queues = 1; ctrlr->opts.num_io_queues = 1;
} }
@ -636,7 +635,7 @@ nvme_ctrlr_set_num_qpairs(struct spdk_nvme_ctrlr *ctrlr)
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0); spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_set_num_queues failed!\n"); SPDK_ERRLOG("nvme_set_num_queues failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -681,7 +680,7 @@ nvme_ctrlr_construct_namespaces(struct spdk_nvme_ctrlr *ctrlr)
uint64_t phys_addr = 0; uint64_t phys_addr = 0;
if (nn == 0) { if (nn == 0) {
nvme_printf(ctrlr, "controller has 0 namespaces\n"); SPDK_ERRLOG("controller has 0 namespaces\n");
return -1; return -1;
} }
@ -751,7 +750,7 @@ nvme_ctrlr_async_event_cb(void *arg, const struct spdk_nvme_cpl *cpl)
* We can't do anything to recover from a failure here, * We can't do anything to recover from a failure here,
* so just print a warning message and leave the AER unsubmitted. * so just print a warning message and leave the AER unsubmitted.
*/ */
nvme_printf(ctrlr, "resubmitting AER failed!\n"); SPDK_ERRLOG("resubmitting AER failed!\n");
} }
} }
@ -794,7 +793,7 @@ nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr)
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0); spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_ctrlr_cmd_set_async_event_config failed!\n"); SPDK_ERRLOG("nvme_ctrlr_cmd_set_async_event_config failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -804,7 +803,7 @@ nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr)
for (i = 0; i < ctrlr->num_aers; i++) { for (i = 0; i < ctrlr->num_aers; i++) {
aer = &ctrlr->aer[i]; aer = &ctrlr->aer[i];
if (nvme_ctrlr_construct_and_submit_aer(ctrlr, aer)) { if (nvme_ctrlr_construct_and_submit_aer(ctrlr, aer)) {
nvme_printf(ctrlr, "nvme_ctrlr_construct_and_submit_aer failed!\n"); SPDK_ERRLOG("nvme_ctrlr_construct_and_submit_aer failed!\n");
return -1; return -1;
} }
} }
@ -911,7 +910,7 @@ nvme_ctrlr_process_init(struct spdk_nvme_ctrlr *ctrlr)
if (ctrlr->state_timeout_tsc != NVME_TIMEOUT_INFINITE && if (ctrlr->state_timeout_tsc != NVME_TIMEOUT_INFINITE &&
nvme_get_tsc() > ctrlr->state_timeout_tsc) { nvme_get_tsc() > ctrlr->state_timeout_tsc) {
nvme_printf(ctrlr, "Initialization timed out in state %d\n", ctrlr->state); SPDK_ERRLOG("Initialization timed out in state %d\n", ctrlr->state);
nvme_ctrlr_fail(ctrlr); nvme_ctrlr_fail(ctrlr);
return -1; return -1;
} }
@ -1052,7 +1051,7 @@ nvme_ctrlr_allocate_bars(struct spdk_nvme_ctrlr *ctrlr)
rc = nvme_pcicfg_map_bar(ctrlr->devhandle, 0, 0 /* writable */, &addr); rc = nvme_pcicfg_map_bar(ctrlr->devhandle, 0, 0 /* writable */, &addr);
ctrlr->regs = (volatile struct spdk_nvme_registers *)addr; ctrlr->regs = (volatile struct spdk_nvme_registers *)addr;
if ((ctrlr->regs == NULL) || (rc != 0)) { if ((ctrlr->regs == NULL) || (rc != 0)) {
nvme_printf(ctrlr, "nvme_pcicfg_map_bar failed with rc %d or bar %p\n", SPDK_ERRLOG("nvme_pcicfg_map_bar failed with rc %d or bar %p\n",
rc, ctrlr->regs); rc, ctrlr->regs);
return -1; return -1;
} }
@ -1070,7 +1069,7 @@ nvme_ctrlr_free_bars(struct spdk_nvme_ctrlr *ctrlr)
rc = nvme_ctrlr_unmap_cmb(ctrlr); rc = nvme_ctrlr_unmap_cmb(ctrlr);
if (rc != 0) { if (rc != 0) {
nvme_printf(ctrlr, "nvme_ctrlr_unmap_cmb failed with error code %d\n", rc); SPDK_ERRLOG("nvme_ctrlr_unmap_cmb failed with error code %d\n", rc);
return -1; return -1;
} }
@ -1270,7 +1269,7 @@ spdk_nvme_ctrlr_attach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_attach_ns failed!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_attach_ns failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -1295,7 +1294,7 @@ spdk_nvme_ctrlr_detach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_detach_ns failed!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_detach_ns failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -1318,7 +1317,7 @@ spdk_nvme_ctrlr_create_ns(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ns_dat
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_create_ns failed!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_create_ns failed!\n");
return 0; return 0;
} }
@ -1347,7 +1346,7 @@ spdk_nvme_ctrlr_delete_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid)
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_delete_ns failed!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_delete_ns failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -1372,7 +1371,7 @@ spdk_nvme_ctrlr_format(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_format failed!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_format failed!\n");
return -ENXIO; return -ENXIO;
} }
@ -1392,7 +1391,7 @@ spdk_nvme_ctrlr_update_firmware(struct spdk_nvme_ctrlr *ctrlr, void *payload, ui
void *p; void *p;
if (size % 4) { if (size % 4) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_update_firmware invalid size!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_update_firmware invalid size!\n");
return -1; return -1;
} }
@ -1417,7 +1416,7 @@ spdk_nvme_ctrlr_update_firmware(struct spdk_nvme_ctrlr *ctrlr, void *payload, ui
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "spdk_nvme_ctrlr_fw_image_download failed!\n"); SPDK_ERRLOG("spdk_nvme_ctrlr_fw_image_download failed!\n");
return -ENXIO; return -ENXIO;
} }
p += transfer; p += transfer;
@ -1443,7 +1442,7 @@ spdk_nvme_ctrlr_update_firmware(struct spdk_nvme_ctrlr *ctrlr, void *payload, ui
pthread_mutex_unlock(&ctrlr->ctrlr_lock); pthread_mutex_unlock(&ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_ctrlr_cmd_fw_commit failed!\n"); SPDK_ERRLOG("nvme_ctrlr_cmd_fw_commit failed!\n");
return -ENXIO; return -ENXIO;
} }

View File

@ -160,11 +160,6 @@ nvme_process_is_primary(void)
return (rte_eal_process_type() == RTE_PROC_PRIMARY); return (rte_eal_process_type() == RTE_PROC_PRIMARY);
} }
/**
* Log or print a message from the NVMe driver.
*/
#define nvme_printf(ctrlr, fmt, args...) printf(fmt, ##args)
/** /**
* Return the physical address for the specified virtual address. * Return the physical address for the specified virtual address.
*/ */
@ -304,7 +299,6 @@ nvme_pcicfg_map_bar(void *devhandle, uint32_t bar, uint32_t read_only, void **ma
static inline int static inline int
nvme_pcicfg_map_bar_write_combine(void *devhandle, uint32_t bar, void **mapped_addr) nvme_pcicfg_map_bar_write_combine(void *devhandle, uint32_t bar, void **mapped_addr)
{ {
nvme_printf(NULL, "DPDK cannot support write combine now\n");
return -1; return -1;
} }

View File

@ -52,6 +52,7 @@
#include "spdk/queue.h" #include "spdk/queue.h"
#include "spdk/barrier.h" #include "spdk/barrier.h"
#include "spdk/log.h"
#include "spdk/mmio.h" #include "spdk/mmio.h"
#include "spdk/pci_ids.h" #include "spdk/pci_ids.h"
#include "spdk/nvme_intel.h" #include "spdk/nvme_intel.h"

View File

@ -60,7 +60,7 @@ int nvme_ns_identify_update(struct spdk_nvme_ns *ns)
pthread_mutex_unlock(&ns->ctrlr->ctrlr_lock); pthread_mutex_unlock(&ns->ctrlr->ctrlr_lock);
} }
if (spdk_nvme_cpl_is_error(&status.cpl)) { if (spdk_nvme_cpl_is_error(&status.cpl)) {
nvme_printf(ctrlr, "nvme_identify_namespace failed\n"); SPDK_ERRLOG("nvme_identify_namespace failed\n");
return -ENXIO; return -ENXIO;
} }

View File

@ -105,7 +105,7 @@ nvme_admin_qpair_print_command(struct spdk_nvme_qpair *qpair,
struct spdk_nvme_cmd *cmd) struct spdk_nvme_cmd *cmd)
{ {
nvme_printf(qpair->ctrlr, "%s (%02x) sqid:%d cid:%d nsid:%x " SPDK_NOTICELOG("%s (%02x) sqid:%d cid:%d nsid:%x "
"cdw10:%08x cdw11:%08x\n", "cdw10:%08x cdw11:%08x\n",
nvme_get_string(admin_opcode, cmd->opc), cmd->opc, qpair->id, cmd->cid, nvme_get_string(admin_opcode, cmd->opc), cmd->opc, qpair->id, cmd->cid,
cmd->nsid, cmd->cdw10, cmd->cdw11); cmd->nsid, cmd->cdw10, cmd->cdw11);
@ -122,7 +122,7 @@ nvme_io_qpair_print_command(struct spdk_nvme_qpair *qpair,
case SPDK_NVME_OPC_READ: case SPDK_NVME_OPC_READ:
case SPDK_NVME_OPC_WRITE_UNCORRECTABLE: case SPDK_NVME_OPC_WRITE_UNCORRECTABLE:
case SPDK_NVME_OPC_COMPARE: case SPDK_NVME_OPC_COMPARE:
nvme_printf(qpair->ctrlr, "%s sqid:%d cid:%d nsid:%d " SPDK_NOTICELOG("%s sqid:%d cid:%d nsid:%d "
"lba:%llu len:%d\n", "lba:%llu len:%d\n",
nvme_get_string(io_opcode, cmd->opc), qpair->id, cmd->cid, nvme_get_string(io_opcode, cmd->opc), qpair->id, cmd->cid,
cmd->nsid, cmd->nsid,
@ -131,12 +131,12 @@ nvme_io_qpair_print_command(struct spdk_nvme_qpair *qpair,
break; break;
case SPDK_NVME_OPC_FLUSH: case SPDK_NVME_OPC_FLUSH:
case SPDK_NVME_OPC_DATASET_MANAGEMENT: case SPDK_NVME_OPC_DATASET_MANAGEMENT:
nvme_printf(qpair->ctrlr, "%s sqid:%d cid:%d nsid:%d\n", SPDK_NOTICELOG("%s sqid:%d cid:%d nsid:%d\n",
nvme_get_string(io_opcode, cmd->opc), qpair->id, cmd->cid, nvme_get_string(io_opcode, cmd->opc), qpair->id, cmd->cid,
cmd->nsid); cmd->nsid);
break; break;
default: default:
nvme_printf(qpair->ctrlr, "%s (%02x) sqid:%d cid:%d nsid:%d\n", SPDK_NOTICELOG("%s (%02x) sqid:%d cid:%d nsid:%d\n",
nvme_get_string(io_opcode, cmd->opc), cmd->opc, qpair->id, nvme_get_string(io_opcode, cmd->opc), cmd->opc, qpair->id,
cmd->cid, cmd->nsid); cmd->cid, cmd->nsid);
break; break;
@ -260,7 +260,7 @@ static void
nvme_qpair_print_completion(struct spdk_nvme_qpair *qpair, nvme_qpair_print_completion(struct spdk_nvme_qpair *qpair,
struct spdk_nvme_cpl *cpl) struct spdk_nvme_cpl *cpl)
{ {
nvme_printf(qpair->ctrlr, "%s (%02x/%02x) sqid:%d cid:%d cdw0:%x sqhd:%04x p:%x m:%x dnr:%x\n", SPDK_NOTICELOG("%s (%02x/%02x) sqid:%d cid:%d cdw0:%x sqhd:%04x p:%x m:%x dnr:%x\n",
get_status_string(cpl->status.sct, cpl->status.sc), get_status_string(cpl->status.sct, cpl->status.sc),
cpl->status.sct, cpl->status.sc, cpl->sqid, cpl->cid, cpl->cdw0, cpl->status.sct, cpl->status.sc, cpl->sqid, cpl->cid, cpl->cdw0,
cpl->sqhd, cpl->status.p, cpl->status.m, cpl->status.dnr); cpl->sqhd, cpl->status.p, cpl->status.m, cpl->status.dnr);
@ -503,8 +503,7 @@ spdk_nvme_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_
if (tr->active) { if (tr->active) {
nvme_qpair_complete_tracker(qpair, tr, cpl, true); nvme_qpair_complete_tracker(qpair, tr, cpl, true);
} else { } else {
nvme_printf(qpair->ctrlr, SPDK_ERRLOG("cpl does not map to outstanding cmd\n");
"cpl does not map to outstanding cmd\n");
nvme_qpair_print_completion(qpair, cpl); nvme_qpair_print_completion(qpair, cpl);
assert(0); assert(0);
} }
@ -562,7 +561,7 @@ nvme_qpair_construct(struct spdk_nvme_qpair *qpair, uint16_t id,
0x1000, 0x1000,
&qpair->cmd_bus_addr); &qpair->cmd_bus_addr);
if (qpair->cmd == NULL) { if (qpair->cmd == NULL) {
nvme_printf(ctrlr, "alloc qpair_cmd failed\n"); SPDK_ERRLOG("alloc qpair_cmd failed\n");
goto fail; goto fail;
} }
} }
@ -572,7 +571,7 @@ nvme_qpair_construct(struct spdk_nvme_qpair *qpair, uint16_t id,
0x1000, 0x1000,
&qpair->cpl_bus_addr); &qpair->cpl_bus_addr);
if (qpair->cpl == NULL) { if (qpair->cpl == NULL) {
nvme_printf(ctrlr, "alloc qpair_cpl failed\n"); SPDK_ERRLOG("alloc qpair_cpl failed\n");
goto fail; goto fail;
} }
@ -592,7 +591,7 @@ nvme_qpair_construct(struct spdk_nvme_qpair *qpair, uint16_t id,
*/ */
qpair->tr = nvme_malloc("nvme_tr", num_trackers * sizeof(*tr), sizeof(*tr), &phys_addr); qpair->tr = nvme_malloc("nvme_tr", num_trackers * sizeof(*tr), sizeof(*tr), &phys_addr);
if (qpair->tr == NULL) { if (qpair->tr == NULL) {
nvme_printf(ctrlr, "nvme_tr failed\n"); SPDK_ERRLOG("nvme_tr failed\n");
goto fail; goto fail;
} }
@ -1000,8 +999,7 @@ _nvme_admin_qpair_enable(struct spdk_nvme_qpair *qpair)
* command was issued no longer applies. * command was issued no longer applies.
*/ */
LIST_FOREACH_SAFE(tr, &qpair->outstanding_tr, list, tr_temp) { LIST_FOREACH_SAFE(tr, &qpair->outstanding_tr, list, tr_temp) {
nvme_printf(qpair->ctrlr, SPDK_ERRLOG("aborting outstanding admin command\n");
"aborting outstanding admin command\n");
nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC, nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, 1 /* do not retry */, true); SPDK_NVME_SC_ABORTED_BY_REQUEST, 1 /* do not retry */, true);
} }
@ -1022,14 +1020,14 @@ _nvme_io_qpair_enable(struct spdk_nvme_qpair *qpair)
while (!STAILQ_EMPTY(&qpair->queued_req)) { while (!STAILQ_EMPTY(&qpair->queued_req)) {
req = STAILQ_FIRST(&qpair->queued_req); req = STAILQ_FIRST(&qpair->queued_req);
STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq); STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq);
nvme_printf(qpair->ctrlr, "aborting queued i/o\n"); SPDK_ERRLOG("aborting queued i/o\n");
nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC, nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, true); SPDK_NVME_SC_ABORTED_BY_REQUEST, true);
} }
/* Manually abort each outstanding I/O. */ /* Manually abort each outstanding I/O. */
LIST_FOREACH_SAFE(tr, &qpair->outstanding_tr, list, temp) { LIST_FOREACH_SAFE(tr, &qpair->outstanding_tr, list, temp) {
nvme_printf(qpair->ctrlr, "aborting outstanding i/o\n"); SPDK_ERRLOG("aborting outstanding i/o\n");
nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC, nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, 0, true); SPDK_NVME_SC_ABORTED_BY_REQUEST, 0, true);
} }
@ -1077,7 +1075,7 @@ nvme_qpair_fail(struct spdk_nvme_qpair *qpair)
while (!STAILQ_EMPTY(&qpair->queued_req)) { while (!STAILQ_EMPTY(&qpair->queued_req)) {
req = STAILQ_FIRST(&qpair->queued_req); req = STAILQ_FIRST(&qpair->queued_req);
STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq); STAILQ_REMOVE_HEAD(&qpair->queued_req, stailq);
nvme_printf(qpair->ctrlr, "failing queued i/o\n"); SPDK_ERRLOG("failing queued i/o\n");
nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC, nvme_qpair_manual_complete_request(qpair, req, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, true); SPDK_NVME_SC_ABORTED_BY_REQUEST, true);
} }
@ -1089,7 +1087,7 @@ nvme_qpair_fail(struct spdk_nvme_qpair *qpair)
* Do not remove the tracker. The abort_tracker path will * Do not remove the tracker. The abort_tracker path will
* do that for us. * do that for us.
*/ */
nvme_printf(qpair->ctrlr, "failing outstanding i/o\n"); SPDK_ERRLOG("failing outstanding i/o\n");
nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC, nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC,
SPDK_NVME_SC_ABORTED_BY_REQUEST, 1 /* do not retry */, true); SPDK_NVME_SC_ABORTED_BY_REQUEST, 1 /* do not retry */, true);
} }

View File

@ -40,13 +40,15 @@ C_SRCS = $(TEST_FILE) $(OTHER_FILES)
CFLAGS += -I$(SPDK_ROOT_DIR)/lib -include $(SPDK_ROOT_DIR)/test/lib/nvme/unit/nvme_impl.h CFLAGS += -I$(SPDK_ROOT_DIR)/lib -include $(SPDK_ROOT_DIR)/test/lib/nvme/unit/nvme_impl.h
CFLAGS += -I$(SPDK_ROOT_DIR)/test CFLAGS += -I$(SPDK_ROOT_DIR)/test
LIBS += -lcunit SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/log/libspdk_log.a
LIBS += -lcunit $(SPDK_LIBS)
APP = $(TEST_FILE:.c=) APP = $(TEST_FILE:.c=)
all: $(APP) all: $(APP)
$(APP) : $(OBJS) $(APP) : $(OBJS) $(SPDK_LIBS)
$(LINK_C) $(LINK_C)
clean: clean:

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \ SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.a \
$(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \ $(SPDK_ROOT_DIR)/lib/util/libspdk_util.a \
$(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a $(SPDK_ROOT_DIR)/lib/memory/libspdk_memory.a \
$(SPDK_ROOT_DIR)/lib/log/libspdk_log.a \
LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB) LIBS += $(SPDK_LIBS) $(PCIACCESS_LIB) $(DPDK_LIB)

View File

@ -35,8 +35,6 @@
#include "nvme/nvme.c" #include "nvme/nvme.c"
char outbuf[OUTBUF_SIZE];
uint64_t nvme_vtophys(void *buf) uint64_t nvme_vtophys(void *buf)
{ {
return (uintptr_t)buf; return (uintptr_t)buf;

View File

@ -33,6 +33,11 @@
#include "spdk_cunit.h" #include "spdk_cunit.h"
#include <stdbool.h>
bool trace_flag = false;
#define SPDK_TRACE_NVME trace_flag
#include "nvme/nvme_ctrlr.c" #include "nvme/nvme_ctrlr.c"
struct nvme_driver _g_nvme_driver = { struct nvme_driver _g_nvme_driver = {
@ -45,8 +50,6 @@ static uint16_t g_pci_device_id;
static uint16_t g_pci_subvendor_id; static uint16_t g_pci_subvendor_id;
static uint16_t g_pci_subdevice_id; static uint16_t g_pci_subdevice_id;
char outbuf[OUTBUF_SIZE];
uint64_t g_ut_tsc = 0; uint64_t g_ut_tsc = 0;
struct spdk_nvme_registers g_ut_nvme_regs = {}; struct spdk_nvme_registers g_ut_nvme_regs = {};

View File

@ -38,8 +38,6 @@
#define CTRLR_CDATA_ELPE 5 #define CTRLR_CDATA_ELPE 5
char outbuf[OUTBUF_SIZE];
struct nvme_request g_req; struct nvme_request g_req;
uint32_t error_num_entries; uint32_t error_num_entries;

View File

@ -57,9 +57,6 @@ nvme_malloc(const char *tag, size_t size, unsigned align, uint64_t *phys_addr)
} }
#define nvme_free(buf) free(buf) #define nvme_free(buf) free(buf)
#define OUTBUF_SIZE 1024
extern char outbuf[OUTBUF_SIZE];
#define nvme_printf(ctrlr, fmt, args...) snprintf(outbuf, OUTBUF_SIZE, fmt, ##args)
#define nvme_get_num_ioq() 8 #define nvme_get_num_ioq() 8
#define nvme_get_ioq_idx() 0 #define nvme_get_ioq_idx() 0

View File

@ -35,8 +35,6 @@
#include "nvme/nvme_ns_cmd.c" #include "nvme/nvme_ns_cmd.c"
char outbuf[OUTBUF_SIZE];
struct nvme_request *g_request = NULL; struct nvme_request *g_request = NULL;

View File

@ -33,9 +33,13 @@
#include <sys/uio.h> #include <sys/uio.h>
#include <stdbool.h>
#include "spdk_cunit.h" #include "spdk_cunit.h"
bool trace_flag = false;
#define SPDK_TRACE_NVME trace_flag
#include "nvme/nvme_qpair.c" #include "nvme/nvme_qpair.c"
struct nvme_driver _g_nvme_driver = { struct nvme_driver _g_nvme_driver = {
@ -45,8 +49,6 @@ struct nvme_driver _g_nvme_driver = {
int32_t spdk_nvme_retry_count = 1; int32_t spdk_nvme_retry_count = 1;
char outbuf[OUTBUF_SIZE];
struct nvme_request *g_request = NULL; struct nvme_request *g_request = NULL;
bool fail_vtophys = false; bool fail_vtophys = false;
@ -192,48 +194,6 @@ nvme_ctrlr_alloc_cmb(struct spdk_nvme_ctrlr *ctrlr, uint64_t length, uint64_t al
return -1; return -1;
} }
static void
test1(void)
{
struct spdk_nvme_qpair qpair = {};
struct spdk_nvme_cmd cmd = {};
outbuf[0] = '\0';
/*
* qpair.id == 0 means it is an admin queue. Ensure
* that the opc is decoded as an admin opc and not an
* I/o opc.
*/
qpair.id = 0;
cmd.opc = SPDK_NVME_OPC_IDENTIFY;
nvme_qpair_print_command(&qpair, &cmd);
CU_ASSERT(strstr(outbuf, "IDENTIFY") != NULL);
}
static void
test2(void)
{
struct spdk_nvme_qpair qpair = {};
struct spdk_nvme_cmd cmd = {};
outbuf[0] = '\0';
/*
* qpair.id != 0 means it is an I/O queue. Ensure
* that the opc is decoded as an I/O opc and not an
* admin opc.
*/
qpair.id = 1;
cmd.opc = SPDK_NVME_OPC_DATASET_MANAGEMENT;
nvme_qpair_print_command(&qpair, &cmd);
CU_ASSERT(strstr(outbuf, "DATASET MANAGEMENT") != NULL);
}
static void static void
prepare_submit_request_test(struct spdk_nvme_qpair *qpair, prepare_submit_request_test(struct spdk_nvme_qpair *qpair,
struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ctrlr *ctrlr,
@ -351,15 +311,12 @@ test4(void)
* a bad payload buffer. * a bad payload buffer.
*/ */
fail_vtophys = true; fail_vtophys = true;
outbuf[0] = '\0';
CU_ASSERT(qpair.sq_tail == 0); CU_ASSERT(qpair.sq_tail == 0);
CU_ASSERT(nvme_qpair_submit_request(&qpair, req) != 0); CU_ASSERT(nvme_qpair_submit_request(&qpair, req) != 0);
CU_ASSERT(qpair.sq_tail == 0); CU_ASSERT(qpair.sq_tail == 0);
/* Assert that command/completion data was printed to log. */
CU_ASSERT(strlen(outbuf) > 0);
cleanup_submit_request_test(&qpair); cleanup_submit_request_test(&qpair);
} }
@ -536,8 +493,6 @@ test_ctrlr_failed(void)
ctrlr.is_failed = true; ctrlr.is_failed = true;
ctrlr.is_resetting = true; ctrlr.is_resetting = true;
outbuf[0] = '\0';
CU_ASSERT(qpair.sq_tail == 0); CU_ASSERT(qpair.sq_tail == 0);
CU_ASSERT(nvme_qpair_submit_request(&qpair, req) != 0); CU_ASSERT(nvme_qpair_submit_request(&qpair, req) != 0);
@ -761,6 +716,7 @@ static void test_nvme_completion_is_retry(void)
CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl)); CU_ASSERT_FALSE(nvme_completion_is_retry(&cpl));
} }
#ifdef DEBUG
static void static void
test_get_status_string(void) test_get_status_string(void)
{ {
@ -782,6 +738,7 @@ test_get_status_string(void)
status_string = get_status_string(100, 0); status_string = get_status_string(100, 0);
CU_ASSERT(strcmp(status_string, "RESERVED") == 0); CU_ASSERT(strcmp(status_string, "RESERVED") == 0);
} }
#endif
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
@ -798,10 +755,7 @@ int main(int argc, char **argv)
return CU_get_error(); return CU_get_error();
} }
if ( if (CU_add_test(suite, "test3", test3) == NULL
CU_add_test(suite, "test1", test1) == NULL
|| CU_add_test(suite, "test2", test2) == NULL
|| CU_add_test(suite, "test3", test3) == NULL
|| CU_add_test(suite, "test4", test4) == NULL || CU_add_test(suite, "test4", test4) == NULL
|| CU_add_test(suite, "ctrlr_failed", test_ctrlr_failed) == NULL || CU_add_test(suite, "ctrlr_failed", test_ctrlr_failed) == NULL
|| CU_add_test(suite, "struct_packing", struct_packing) == NULL || CU_add_test(suite, "struct_packing", struct_packing) == NULL
@ -812,7 +766,9 @@ int main(int argc, char **argv)
test_nvme_qpair_process_completions_limit) == NULL test_nvme_qpair_process_completions_limit) == NULL
|| CU_add_test(suite, "nvme_qpair_destroy", test_nvme_qpair_destroy) == NULL || CU_add_test(suite, "nvme_qpair_destroy", test_nvme_qpair_destroy) == NULL
|| CU_add_test(suite, "nvme_completion_is_retry", test_nvme_completion_is_retry) == NULL || CU_add_test(suite, "nvme_completion_is_retry", test_nvme_completion_is_retry) == NULL
#ifdef DEBUG
|| CU_add_test(suite, "get_status_string", test_get_status_string) == NULL || CU_add_test(suite, "get_status_string", test_get_status_string) == NULL
#endif
|| CU_add_test(suite, "sgl_request", test_sgl_req) == NULL || CU_add_test(suite, "sgl_request", test_sgl_req) == NULL
|| CU_add_test(suite, "hw_sgl_request", test_hw_sgl_req) == NULL || CU_add_test(suite, "hw_sgl_request", test_hw_sgl_req) == NULL
) { ) {