nvme: export abort command as public API
This commit is contained in:
parent
4163626c5c
commit
687e93c4a5
@ -551,6 +551,25 @@ int spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr,
|
|||||||
uint64_t offset,
|
uint64_t offset,
|
||||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg);
|
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.
|
* \brief Set specific feature for the given NVMe controller.
|
||||||
*
|
*
|
||||||
|
@ -393,14 +393,18 @@ spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint8_t log_page
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid,
|
spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair,
|
||||||
uint16_t sqid, spdk_nvme_cmd_cb cb_fn, void *cb_arg)
|
uint16_t cid, spdk_nvme_cmd_cb cb_fn, void *cb_arg)
|
||||||
{
|
{
|
||||||
|
int rc;
|
||||||
struct nvme_request *req;
|
struct nvme_request *req;
|
||||||
struct spdk_nvme_cmd *cmd;
|
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);
|
req = nvme_allocate_request_null(cb_fn, cb_arg);
|
||||||
if (req == NULL) {
|
if (req == NULL) {
|
||||||
|
nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,7 +412,9 @@ nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, uint16_t cid,
|
|||||||
cmd->opc = SPDK_NVME_OPC_ABORT;
|
cmd->opc = SPDK_NVME_OPC_ABORT;
|
||||||
cmd->cdw10 = (cid << 16) | sqid;
|
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
|
int
|
||||||
|
@ -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,
|
int nvme_ctrlr_cmd_set_async_event_config(struct spdk_nvme_ctrlr *ctrlr,
|
||||||
union spdk_nvme_critical_warning_state state,
|
union spdk_nvme_critical_warning_state state,
|
||||||
spdk_nvme_cmd_cb cb_fn, void *cb_arg);
|
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,
|
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);
|
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,
|
int nvme_ctrlr_cmd_detach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
|
||||||
|
@ -459,10 +459,12 @@ static void
|
|||||||
test_abort_cmd(void)
|
test_abort_cmd(void)
|
||||||
{
|
{
|
||||||
struct spdk_nvme_ctrlr ctrlr = {};
|
struct spdk_nvme_ctrlr ctrlr = {};
|
||||||
|
struct spdk_nvme_qpair qpair = {};
|
||||||
|
|
||||||
verify_fn = verify_abort_cmd;
|
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
|
static void
|
||||||
|
Loading…
Reference in New Issue
Block a user