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_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)

View File

@ -46,7 +46,8 @@ LDFLAGS += -shared -rdynamic
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

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);
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);
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))
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);
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),
64, &phys_addr);
if (ctrlr == NULL) {
nvme_printf(NULL, "could not allocate ctrlr\n");
SPDK_ERRLOG("could not allocate ctrlr\n");
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)) {
ctrlr = nvme_attach(pci_dev);
if (ctrlr == NULL) {
nvme_printf(NULL, "nvme_attach() failed\n");
SPDK_ERRLOG("nvme_attach() failed\n");
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,
sizeof(struct nvme_request), 128);
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);
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);
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);
}
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;
}
@ -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);
}
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 */
status.done = false;
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.
*/
if ((cc.bits.ams == SPDK_NVME_CC_AMS_RR) && (qprio != SPDK_NVME_QPRIO_URGENT)) {
nvme_printf(ctrlr,
"invalid queue priority for default round robin arbitration method\n");
SPDK_ERRLOG("invalid queue priority for default round robin arbitration method\n");
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),
64, &phys_addr);
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;
}
@ -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)) {
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;
}
@ -443,7 +442,7 @@ nvme_ctrlr_shutdown(struct spdk_nvme_ctrlr *ctrlr)
break;
}
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
@ -456,7 +455,7 @@ nvme_ctrlr_enable(struct spdk_nvme_ctrlr *ctrlr)
cc.raw = nvme_mmio_read_4(ctrlr, cc.raw);
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;
}
@ -537,7 +536,7 @@ spdk_nvme_ctrlr_reset(struct spdk_nvme_ctrlr *ctrlr)
ctrlr->is_resetting = true;
nvme_printf(ctrlr, "resetting controller\n");
SPDK_NOTICELOG("resetting controller\n");
/* Disable all queues before disabling the controller hardware. */
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) {
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);
rc = -1;
break;
@ -591,7 +590,7 @@ nvme_ctrlr_identify(struct spdk_nvme_ctrlr *ctrlr)
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
}
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;
}
@ -618,11 +617,11 @@ nvme_ctrlr_set_num_qpairs(struct spdk_nvme_ctrlr *ctrlr)
status.done = false;
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;
} 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;
}
@ -636,7 +635,7 @@ nvme_ctrlr_set_num_qpairs(struct spdk_nvme_ctrlr *ctrlr)
spdk_nvme_qpair_process_completions(&ctrlr->adminq, 0);
}
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;
}
@ -681,7 +680,7 @@ nvme_ctrlr_construct_namespaces(struct spdk_nvme_ctrlr *ctrlr)
uint64_t phys_addr = 0;
if (nn == 0) {
nvme_printf(ctrlr, "controller has 0 namespaces\n");
SPDK_ERRLOG("controller has 0 namespaces\n");
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,
* 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);
}
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;
}
@ -804,7 +803,7 @@ nvme_ctrlr_configure_aer(struct spdk_nvme_ctrlr *ctrlr)
for (i = 0; i < ctrlr->num_aers; i++) {
aer = &ctrlr->aer[i];
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;
}
}
@ -911,7 +910,7 @@ nvme_ctrlr_process_init(struct spdk_nvme_ctrlr *ctrlr)
if (ctrlr->state_timeout_tsc != NVME_TIMEOUT_INFINITE &&
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);
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);
ctrlr->regs = (volatile struct spdk_nvme_registers *)addr;
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);
return -1;
}
@ -1070,7 +1069,7 @@ nvme_ctrlr_free_bars(struct spdk_nvme_ctrlr *ctrlr)
rc = nvme_ctrlr_unmap_cmb(ctrlr);
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;
}
@ -1270,7 +1269,7 @@ spdk_nvme_ctrlr_attach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
}
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;
}
@ -1295,7 +1294,7 @@ spdk_nvme_ctrlr_detach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
}
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;
}
@ -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);
}
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;
}
@ -1347,7 +1346,7 @@ spdk_nvme_ctrlr_delete_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid)
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
}
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;
}
@ -1372,7 +1371,7 @@ spdk_nvme_ctrlr_format(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
}
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;
}
@ -1392,7 +1391,7 @@ spdk_nvme_ctrlr_update_firmware(struct spdk_nvme_ctrlr *ctrlr, void *payload, ui
void *p;
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;
}
@ -1417,7 +1416,7 @@ spdk_nvme_ctrlr_update_firmware(struct spdk_nvme_ctrlr *ctrlr, void *payload, ui
pthread_mutex_unlock(&ctrlr->ctrlr_lock);
}
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;
}
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);
}
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;
}

View File

@ -160,11 +160,6 @@ nvme_process_is_primary(void)
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.
*/
@ -304,7 +299,6 @@ nvme_pcicfg_map_bar(void *devhandle, uint32_t bar, uint32_t read_only, void **ma
static inline int
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;
}

View File

@ -52,6 +52,7 @@
#include "spdk/queue.h"
#include "spdk/barrier.h"
#include "spdk/log.h"
#include "spdk/mmio.h"
#include "spdk/pci_ids.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);
}
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;
}

View File

@ -105,7 +105,7 @@ nvme_admin_qpair_print_command(struct spdk_nvme_qpair *qpair,
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",
nvme_get_string(admin_opcode, cmd->opc), cmd->opc, qpair->id, cmd->cid,
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_WRITE_UNCORRECTABLE:
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",
nvme_get_string(io_opcode, cmd->opc), qpair->id, cmd->cid,
cmd->nsid,
@ -131,12 +131,12 @@ nvme_io_qpair_print_command(struct spdk_nvme_qpair *qpair,
break;
case SPDK_NVME_OPC_FLUSH:
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,
cmd->nsid);
break;
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,
cmd->cid, cmd->nsid);
break;
@ -260,7 +260,7 @@ static void
nvme_qpair_print_completion(struct spdk_nvme_qpair *qpair,
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),
cpl->status.sct, cpl->status.sc, cpl->sqid, cpl->cid, cpl->cdw0,
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) {
nvme_qpair_complete_tracker(qpair, tr, cpl, true);
} else {
nvme_printf(qpair->ctrlr,
"cpl does not map to outstanding cmd\n");
SPDK_ERRLOG("cpl does not map to outstanding cmd\n");
nvme_qpair_print_completion(qpair, cpl);
assert(0);
}
@ -562,7 +561,7 @@ nvme_qpair_construct(struct spdk_nvme_qpair *qpair, uint16_t id,
0x1000,
&qpair->cmd_bus_addr);
if (qpair->cmd == NULL) {
nvme_printf(ctrlr, "alloc qpair_cmd failed\n");
SPDK_ERRLOG("alloc qpair_cmd failed\n");
goto fail;
}
}
@ -572,7 +571,7 @@ nvme_qpair_construct(struct spdk_nvme_qpair *qpair, uint16_t id,
0x1000,
&qpair->cpl_bus_addr);
if (qpair->cpl == NULL) {
nvme_printf(ctrlr, "alloc qpair_cpl failed\n");
SPDK_ERRLOG("alloc qpair_cpl failed\n");
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);
if (qpair->tr == NULL) {
nvme_printf(ctrlr, "nvme_tr failed\n");
SPDK_ERRLOG("nvme_tr failed\n");
goto fail;
}
@ -1000,8 +999,7 @@ _nvme_admin_qpair_enable(struct spdk_nvme_qpair *qpair)
* command was issued no longer applies.
*/
LIST_FOREACH_SAFE(tr, &qpair->outstanding_tr, list, tr_temp) {
nvme_printf(qpair->ctrlr,
"aborting outstanding admin command\n");
SPDK_ERRLOG("aborting outstanding admin command\n");
nvme_qpair_manual_complete_tracker(qpair, tr, SPDK_NVME_SCT_GENERIC,
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)) {
req = STAILQ_FIRST(&qpair->queued_req);
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,
SPDK_NVME_SC_ABORTED_BY_REQUEST, true);
}
/* Manually abort each outstanding I/O. */
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,
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)) {
req = STAILQ_FIRST(&qpair->queued_req);
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,
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 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,
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)/test
LIBS += -lcunit
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/log/libspdk_log.a
LIBS += -lcunit $(SPDK_LIBS)
APP = $(TEST_FILE:.c=)
all: $(APP)
$(APP) : $(OBJS)
$(APP) : $(OBJS) $(SPDK_LIBS)
$(LINK_C)
clean:

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

@ -42,7 +42,8 @@ CFLAGS += -I. $(DPDK_INC)
SPDK_LIBS += $(SPDK_ROOT_DIR)/lib/nvme/libspdk_nvme.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)

View File

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

View File

@ -33,6 +33,11 @@
#include "spdk_cunit.h"
#include <stdbool.h>
bool trace_flag = false;
#define SPDK_TRACE_NVME trace_flag
#include "nvme/nvme_ctrlr.c"
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_subdevice_id;
char outbuf[OUTBUF_SIZE];
uint64_t g_ut_tsc = 0;
struct spdk_nvme_registers g_ut_nvme_regs = {};

View File

@ -38,8 +38,6 @@
#define CTRLR_CDATA_ELPE 5
char outbuf[OUTBUF_SIZE];
struct nvme_request g_req;
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 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_ioq_idx() 0

View File

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

View File

@ -33,9 +33,13 @@
#include <sys/uio.h>
#include <stdbool.h>
#include "spdk_cunit.h"
bool trace_flag = false;
#define SPDK_TRACE_NVME trace_flag
#include "nvme/nvme_qpair.c"
struct nvme_driver _g_nvme_driver = {
@ -45,8 +49,6 @@ struct nvme_driver _g_nvme_driver = {
int32_t spdk_nvme_retry_count = 1;
char outbuf[OUTBUF_SIZE];
struct nvme_request *g_request = NULL;
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;
}
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
prepare_submit_request_test(struct spdk_nvme_qpair *qpair,
struct spdk_nvme_ctrlr *ctrlr,
@ -351,15 +311,12 @@ test4(void)
* a bad payload buffer.
*/
fail_vtophys = true;
outbuf[0] = '\0';
CU_ASSERT(qpair.sq_tail == 0);
CU_ASSERT(nvme_qpair_submit_request(&qpair, req) != 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);
}
@ -536,8 +493,6 @@ test_ctrlr_failed(void)
ctrlr.is_failed = true;
ctrlr.is_resetting = true;
outbuf[0] = '\0';
CU_ASSERT(qpair.sq_tail == 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));
}
#ifdef DEBUG
static void
test_get_status_string(void)
{
@ -782,6 +738,7 @@ test_get_status_string(void)
status_string = get_status_string(100, 0);
CU_ASSERT(strcmp(status_string, "RESERVED") == 0);
}
#endif
int main(int argc, char **argv)
{
@ -798,10 +755,7 @@ int main(int argc, char **argv)
return CU_get_error();
}
if (
CU_add_test(suite, "test1", test1) == NULL
|| CU_add_test(suite, "test2", test2) == NULL
|| CU_add_test(suite, "test3", test3) == NULL
if (CU_add_test(suite, "test3", test3) == NULL
|| CU_add_test(suite, "test4", test4) == NULL
|| CU_add_test(suite, "ctrlr_failed", test_ctrlr_failed) == 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
|| 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
#ifdef DEBUG
|| 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, "hw_sgl_request", test_hw_sgl_req) == NULL
) {