diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 6ac1a4f93..30098b789 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -237,13 +237,16 @@ struct nvme_namespace *nvme_ctrlr_get_ns(struct nvme_controller *ctrlr, uint32_t * \param payload_size - the size of payload buffer. * \param cb_fn - call back funciton pointer which will be called after get log page. * \param cb_arg - input parameter for the cb_fn. + * + * \return 0 if successfully submitted, ENOMEM if resources could not be allocated for this request + * * Call \ref nvme_ctrlr_process_admin_completions() to poll for completion * of commands submitted through this function. */ -void nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, - uint8_t log_page, uint32_t nsid, - void *payload, uint32_t payload_size, - nvme_cb_fn_t cb_fn, void *cb_arg); +int nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, + uint8_t log_page, uint32_t nsid, + void *payload, uint32_t payload_size, + nvme_cb_fn_t cb_fn, void *cb_arg); /** * \brief Get the identify namespace data as defined by the NVMe specification. diff --git a/lib/nvme/nvme_ctrlr_cmd.c b/lib/nvme/nvme_ctrlr_cmd.c index b28f5c31b..e0fc4d0b8 100644 --- a/lib/nvme/nvme_ctrlr_cmd.c +++ b/lib/nvme/nvme_ctrlr_cmd.c @@ -233,7 +233,7 @@ nvme_ctrlr_cmd_set_async_event_config(struct nvme_controller *ctrlr, cb_arg); } -void +int nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, uint8_t log_page, uint32_t nsid, void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn, void *cb_arg) @@ -243,6 +243,10 @@ nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, uint8_t log_page, nvme_mutex_lock(&ctrlr->ctrlr_lock); req = nvme_allocate_request(payload, payload_size, cb_fn, cb_arg); + if (req == NULL) { + nvme_mutex_unlock(&ctrlr->ctrlr_lock); + return ENOMEM; + } cmd = &req->cmd; cmd->opc = NVME_OPC_GET_LOG_PAGE; @@ -252,6 +256,8 @@ nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, uint8_t log_page, nvme_ctrlr_submit_admin_request(ctrlr, req); nvme_mutex_unlock(&ctrlr->ctrlr_lock); + + return 0; } void diff --git a/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c b/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c index 2675e0457..87cb2f709 100644 --- a/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c +++ b/test/lib/nvme/unit/nvme_ctrlr_c/nvme_ctrlr_ut.c @@ -50,11 +50,13 @@ int nvme_qpair_construct(struct nvme_qpair *qpair, uint16_t id, { return 0; } -void + +int nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, uint8_t log_page, uint32_t nsid, void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn, void *cb_arg) { + return 0; } void