lib/nvme: add a disconnect_qpair public API.
Also modify some api documentation to indicate how the new API should be used. Signed-off-by: Seth Howell <seth.howell@intel.com> Change-Id: Icdbfb09aceda28635fdd191c520b36c692c2c100 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1340 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
7b4558e356
commit
5d9d52fd3c
@ -1211,6 +1211,21 @@ struct spdk_nvme_qpair *spdk_nvme_ctrlr_alloc_io_qpair(struct spdk_nvme_ctrlr *c
|
|||||||
*/
|
*/
|
||||||
int spdk_nvme_ctrlr_connect_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair);
|
int spdk_nvme_ctrlr_connect_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair *qpair);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Disconnect the given I/O qpair.
|
||||||
|
*
|
||||||
|
* This function must be called from the same thread as spdk_nvme_qpair_process_completions
|
||||||
|
* and the spdk_nvme_ns_cmd_* functions.
|
||||||
|
*
|
||||||
|
* After disconnect, calling spdk_nvme_qpair_process_completions or one of the
|
||||||
|
* spdk_nvme_ns_cmd* on a qpair will result in a return value of -ENXIO. A
|
||||||
|
* disconnected qpair may be reconnected with either the spdk_nvme_ctrlr_connect_io_qpair
|
||||||
|
* or spdk_nvme_ctrlr_reconnect_io_qpair APIs.
|
||||||
|
*
|
||||||
|
* \param qpair The qpair to disconnect.
|
||||||
|
*/
|
||||||
|
void spdk_nvme_ctrlr_disconnect_io_qpair(struct spdk_nvme_qpair *qpair);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to reconnect the given qpair.
|
* Attempt to reconnect the given qpair.
|
||||||
*
|
*
|
||||||
|
@ -371,6 +371,16 @@ spdk_nvme_ctrlr_connect_io_qpair(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
spdk_nvme_ctrlr_disconnect_io_qpair(struct spdk_nvme_qpair *qpair)
|
||||||
|
{
|
||||||
|
struct spdk_nvme_ctrlr *ctrlr = qpair->ctrlr;
|
||||||
|
|
||||||
|
nvme_robust_mutex_lock(&ctrlr->ctrlr_lock);
|
||||||
|
nvme_transport_ctrlr_disconnect_qpair(ctrlr, qpair);
|
||||||
|
nvme_robust_mutex_unlock(&ctrlr->ctrlr_lock);
|
||||||
|
}
|
||||||
|
|
||||||
struct spdk_nvme_qpair *
|
struct spdk_nvme_qpair *
|
||||||
spdk_nvme_ctrlr_alloc_io_qpair(struct spdk_nvme_ctrlr *ctrlr,
|
spdk_nvme_ctrlr_alloc_io_qpair(struct spdk_nvme_ctrlr *ctrlr,
|
||||||
const struct spdk_nvme_io_qpair_opts *user_opts,
|
const struct spdk_nvme_io_qpair_opts *user_opts,
|
||||||
|
Loading…
Reference in New Issue
Block a user