Loading include/spdk/nvme.h +19 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,25 @@ int spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint64_t offset, spdk_nvme_cmd_cb cb_fn, void *cb_arg); /** * \brief Abort a specific previously-submitted NVMe command. * * \param ctrlr NVMe controller to which the command was submitted. * \param qpair NVMe queue pair to which the command was submitted. * \param cid Command ID of the command to abort. * \param cb_fn Callback function to invoke when the abort has completed. * \param cb_arg Argument to pass to the callback function.\ * * \return 0 if successfully submitted, negated errno value otherwise. * * \sa spdk_nvme_ctrlr_register_timeout_callback() */ int spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair, uint16_t cid, spdk_nvme_cmd_cb cb_fn, void *cb_arg); /** * \brief Set specific feature for the given NVMe controller. * Loading lib/nvme/nvme_ctrlr_cmd.c +9 −3 Original line number Diff line number Diff line Loading @@ -393,14 +393,18 @@ spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint8_t log_page } int nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid, uint16_t sqid, spdk_nvme_cmd_cb cb_fn, void *cb_arg) spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair, uint16_t cid, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { int rc; struct nvme_request *req; struct spdk_nvme_cmd *cmd; uint16_t sqid = qpair->id; nvme_robust_mutex_lock(&ctrlr->ctrlr_lock); req = nvme_allocate_request_null(cb_fn, cb_arg); if (req == NULL) { nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock); return -ENOMEM; } Loading @@ -408,7 +412,9 @@ nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid, cmd->opc = SPDK_NVME_OPC_ABORT; cmd->cdw10 = (cid << 16) | sqid; return nvme_ctrlr_submit_admin_request(ctrlr, req); rc = nvme_ctrlr_submit_admin_request(ctrlr, req); nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock); return rc; } int Loading lib/nvme/nvme_internal.h +0 −2 Original line number Diff line number Diff line Loading @@ -483,8 +483,6 @@ int nvme_ctrlr_cmd_set_num_queues(struct spdk_nvme_ctrlr *ctrlr, int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr, union spdk_nvme_critical_warning_state state, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid, uint16_t sqid, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_attach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, struct spdk_nvme_ctrlr_list *payload, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_detach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, Loading test/lib/nvme/unit/nvme_ctrlr_cmd_c/nvme_ctrlr_cmd_ut.c +3 −1 Original line number Diff line number Diff line Loading @@ -459,10 +459,12 @@ static void test_abort_cmd(void) { struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_qpair qpair = {}; verify_fn = verify_abort_cmd; nvme_ctrlr_cmd_abort(&ctrlr, abort_cid, abort_sqid, NULL, NULL); qpair.id = abort_sqid; spdk_nvme_ctrlr_cmd_abort(&ctrlr, &qpair, abort_cid, NULL, NULL); } static void Loading Loading
include/spdk/nvme.h +19 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,25 @@ int spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint64_t offset, spdk_nvme_cmd_cb cb_fn, void *cb_arg); /** * \brief Abort a specific previously-submitted NVMe command. * * \param ctrlr NVMe controller to which the command was submitted. * \param qpair NVMe queue pair to which the command was submitted. * \param cid Command ID of the command to abort. * \param cb_fn Callback function to invoke when the abort has completed. * \param cb_arg Argument to pass to the callback function.\ * * \return 0 if successfully submitted, negated errno value otherwise. * * \sa spdk_nvme_ctrlr_register_timeout_callback() */ int spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair, uint16_t cid, spdk_nvme_cmd_cb cb_fn, void *cb_arg); /** * \brief Set specific feature for the given NVMe controller. * Loading
lib/nvme/nvme_ctrlr_cmd.c +9 −3 Original line number Diff line number Diff line Loading @@ -393,14 +393,18 @@ spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint8_t log_page } int nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid, uint16_t sqid, spdk_nvme_cmd_cb cb_fn, void *cb_arg) spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair, uint16_t cid, spdk_nvme_cmd_cb cb_fn, void *cb_arg) { int rc; struct nvme_request *req; struct spdk_nvme_cmd *cmd; uint16_t sqid = qpair->id; nvme_robust_mutex_lock(&ctrlr->ctrlr_lock); req = nvme_allocate_request_null(cb_fn, cb_arg); if (req == NULL) { nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock); return -ENOMEM; } Loading @@ -408,7 +412,9 @@ nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid, cmd->opc = SPDK_NVME_OPC_ABORT; cmd->cdw10 = (cid << 16) | sqid; return nvme_ctrlr_submit_admin_request(ctrlr, req); rc = nvme_ctrlr_submit_admin_request(ctrlr, req); nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock); return rc; } int Loading
lib/nvme/nvme_internal.h +0 −2 Original line number Diff line number Diff line Loading @@ -483,8 +483,6 @@ int nvme_ctrlr_cmd_set_num_queues(struct spdk_nvme_ctrlr *ctrlr, int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr, union spdk_nvme_critical_warning_state state, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid, uint16_t sqid, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_attach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, struct spdk_nvme_ctrlr_list *payload, spdk_nvme_cmd_cb cb_fn, void *cb_arg); int nvme_ctrlr_cmd_detach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, Loading
test/lib/nvme/unit/nvme_ctrlr_cmd_c/nvme_ctrlr_cmd_ut.c +3 −1 Original line number Diff line number Diff line Loading @@ -459,10 +459,12 @@ static void test_abort_cmd(void) { struct spdk_nvme_ctrlr ctrlr = {}; struct spdk_nvme_qpair qpair = {}; verify_fn = verify_abort_cmd; nvme_ctrlr_cmd_abort(&ctrlr, abort_cid, abort_sqid, NULL, NULL); qpair.id = abort_sqid; spdk_nvme_ctrlr_cmd_abort(&ctrlr, &qpair, abort_cid, NULL, NULL); } static void Loading