nvmf: move spdk_nvmf_transport_ops to public API
This will enable pluggable transports. Change-Id: Id6d3f55e9f5d5c07a97b9d848ec99df43ec05331 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/477503 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com> Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Alexey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
5e3f93a75c
commit
d1a3e31f96
@ -114,6 +114,144 @@ struct spdk_nvmf_transport_poll_group_stat {
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Function to be called for each newly discovered qpair.
|
||||
*
|
||||
* \param qpair The newly discovered qpair.
|
||||
* \param cb_arg A context argument passed to this function.
|
||||
*/
|
||||
typedef void (*new_qpair_fn)(struct spdk_nvmf_qpair *qpair, void *cb_arg);
|
||||
|
||||
struct spdk_nvmf_transport_ops {
|
||||
/**
|
||||
* Transport type
|
||||
*/
|
||||
enum spdk_nvme_transport_type type;
|
||||
|
||||
/**
|
||||
* Initialize transport options to default value
|
||||
*/
|
||||
void (*opts_init)(struct spdk_nvmf_transport_opts *opts);
|
||||
|
||||
/**
|
||||
* Create a transport for the given transport opts
|
||||
*/
|
||||
struct spdk_nvmf_transport *(*create)(struct spdk_nvmf_transport_opts *opts);
|
||||
|
||||
/**
|
||||
* Destroy the transport
|
||||
*/
|
||||
int (*destroy)(struct spdk_nvmf_transport *transport);
|
||||
|
||||
/**
|
||||
* Instruct the transport to accept new connections at the address
|
||||
* provided. This may be called multiple times.
|
||||
*/
|
||||
int (*listen)(struct spdk_nvmf_transport *transport,
|
||||
const struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/**
|
||||
* Stop accepting new connections at the given address.
|
||||
*/
|
||||
int (*stop_listen)(struct spdk_nvmf_transport *transport,
|
||||
const struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/**
|
||||
* Check for new connections on the transport.
|
||||
*/
|
||||
void (*accept)(struct spdk_nvmf_transport *transport, new_qpair_fn cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Fill out a discovery log entry for a specific listen address.
|
||||
*/
|
||||
void (*listener_discover)(struct spdk_nvmf_transport *transport,
|
||||
struct spdk_nvme_transport_id *trid,
|
||||
struct spdk_nvmf_discovery_log_page_entry *entry);
|
||||
|
||||
/**
|
||||
* Create a new poll group
|
||||
*/
|
||||
struct spdk_nvmf_transport_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport);
|
||||
|
||||
/**
|
||||
* Get the polling group of the queue pair optimal for the specific transport
|
||||
*/
|
||||
struct spdk_nvmf_transport_poll_group *(*get_optimal_poll_group)(struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/**
|
||||
* Destroy a poll group
|
||||
*/
|
||||
void (*poll_group_destroy)(struct spdk_nvmf_transport_poll_group *group);
|
||||
|
||||
/**
|
||||
* Add a qpair to a poll group
|
||||
*/
|
||||
int (*poll_group_add)(struct spdk_nvmf_transport_poll_group *group,
|
||||
struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/**
|
||||
* Remove a qpair from a poll group
|
||||
*/
|
||||
int (*poll_group_remove)(struct spdk_nvmf_transport_poll_group *group,
|
||||
struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/**
|
||||
* Poll the group to process I/O
|
||||
*/
|
||||
int (*poll_group_poll)(struct spdk_nvmf_transport_poll_group *group);
|
||||
|
||||
/*
|
||||
* Free the request without sending a response
|
||||
* to the originator. Release memory tied to this request.
|
||||
*/
|
||||
int (*req_free)(struct spdk_nvmf_request *req);
|
||||
|
||||
/*
|
||||
* Signal request completion, which sends a response
|
||||
* to the originator.
|
||||
*/
|
||||
int (*req_complete)(struct spdk_nvmf_request *req);
|
||||
|
||||
/*
|
||||
* Deinitialize a connection.
|
||||
*/
|
||||
void (*qpair_fini)(struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/*
|
||||
* Get the peer transport ID for the queue pair.
|
||||
*/
|
||||
int (*qpair_get_peer_trid)(struct spdk_nvmf_qpair *qpair,
|
||||
struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/*
|
||||
* Get the local transport ID for the queue pair.
|
||||
*/
|
||||
int (*qpair_get_local_trid)(struct spdk_nvmf_qpair *qpair,
|
||||
struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/*
|
||||
* Get the listener transport ID that accepted this qpair originally.
|
||||
*/
|
||||
int (*qpair_get_listen_trid)(struct spdk_nvmf_qpair *qpair,
|
||||
struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/*
|
||||
* set the submission queue size of the queue pair
|
||||
*/
|
||||
int (*qpair_set_sqsize)(struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/*
|
||||
* Get transport poll group statistics
|
||||
*/
|
||||
int (*poll_group_get_stat)(struct spdk_nvmf_tgt *tgt,
|
||||
struct spdk_nvmf_transport_poll_group_stat **stat);
|
||||
|
||||
/*
|
||||
* Free transport poll group statistics previously allocated with poll_group_get_stat()
|
||||
*/
|
||||
void (*poll_group_free_stat)(struct spdk_nvmf_transport_poll_group_stat *stat);
|
||||
};
|
||||
|
||||
/**
|
||||
* Construct an NVMe-oF target.
|
||||
*
|
||||
@ -214,14 +352,6 @@ void spdk_nvmf_tgt_listen(struct spdk_nvmf_tgt *tgt,
|
||||
spdk_nvmf_tgt_listen_done_fn cb_fn,
|
||||
void *cb_arg);
|
||||
|
||||
/**
|
||||
* Function to be called for each newly discovered qpair.
|
||||
*
|
||||
* \param qpair The newly discovered qpair.
|
||||
* \param cb_arg A context argument passed to this function.
|
||||
*/
|
||||
typedef void (*new_qpair_fn)(struct spdk_nvmf_qpair *qpair, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Poll the target for incoming connections.
|
||||
*
|
||||
|
@ -50,136 +50,6 @@ struct spdk_nvmf_transport {
|
||||
TAILQ_ENTRY(spdk_nvmf_transport) link;
|
||||
};
|
||||
|
||||
struct spdk_nvmf_transport_ops {
|
||||
/**
|
||||
* Transport type
|
||||
*/
|
||||
enum spdk_nvme_transport_type type;
|
||||
|
||||
/**
|
||||
* Initialize transport options to default value
|
||||
*/
|
||||
void (*opts_init)(struct spdk_nvmf_transport_opts *opts);
|
||||
|
||||
/**
|
||||
* Create a transport for the given transport opts
|
||||
*/
|
||||
struct spdk_nvmf_transport *(*create)(struct spdk_nvmf_transport_opts *opts);
|
||||
|
||||
/**
|
||||
* Destroy the transport
|
||||
*/
|
||||
int (*destroy)(struct spdk_nvmf_transport *transport);
|
||||
|
||||
/**
|
||||
* Instruct the transport to accept new connections at the address
|
||||
* provided. This may be called multiple times.
|
||||
*/
|
||||
int (*listen)(struct spdk_nvmf_transport *transport,
|
||||
const struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/**
|
||||
* Stop accepting new connections at the given address.
|
||||
*/
|
||||
int (*stop_listen)(struct spdk_nvmf_transport *transport,
|
||||
const struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/**
|
||||
* Check for new connections on the transport.
|
||||
*/
|
||||
void (*accept)(struct spdk_nvmf_transport *transport, new_qpair_fn cb_fn, void *cb_arg);
|
||||
|
||||
/**
|
||||
* Fill out a discovery log entry for a specific listen address.
|
||||
*/
|
||||
void (*listener_discover)(struct spdk_nvmf_transport *transport,
|
||||
struct spdk_nvme_transport_id *trid,
|
||||
struct spdk_nvmf_discovery_log_page_entry *entry);
|
||||
|
||||
/**
|
||||
* Create a new poll group
|
||||
*/
|
||||
struct spdk_nvmf_transport_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport);
|
||||
|
||||
/**
|
||||
* Get the polling group of the queue pair optimal for the specific transport
|
||||
*/
|
||||
struct spdk_nvmf_transport_poll_group *(*get_optimal_poll_group)(struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/**
|
||||
* Destroy a poll group
|
||||
*/
|
||||
void (*poll_group_destroy)(struct spdk_nvmf_transport_poll_group *group);
|
||||
|
||||
/**
|
||||
* Add a qpair to a poll group
|
||||
*/
|
||||
int (*poll_group_add)(struct spdk_nvmf_transport_poll_group *group,
|
||||
struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/**
|
||||
* Remove a qpair from a poll group
|
||||
*/
|
||||
int (*poll_group_remove)(struct spdk_nvmf_transport_poll_group *group,
|
||||
struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/**
|
||||
* Poll the group to process I/O
|
||||
*/
|
||||
int (*poll_group_poll)(struct spdk_nvmf_transport_poll_group *group);
|
||||
|
||||
/*
|
||||
* Free the request without sending a response
|
||||
* to the originator. Release memory tied to this request.
|
||||
*/
|
||||
int (*req_free)(struct spdk_nvmf_request *req);
|
||||
|
||||
/*
|
||||
* Signal request completion, which sends a response
|
||||
* to the originator.
|
||||
*/
|
||||
int (*req_complete)(struct spdk_nvmf_request *req);
|
||||
|
||||
/*
|
||||
* Deinitialize a connection.
|
||||
*/
|
||||
void (*qpair_fini)(struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/*
|
||||
* Get the peer transport ID for the queue pair.
|
||||
*/
|
||||
int (*qpair_get_peer_trid)(struct spdk_nvmf_qpair *qpair,
|
||||
struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/*
|
||||
* Get the local transport ID for the queue pair.
|
||||
*/
|
||||
int (*qpair_get_local_trid)(struct spdk_nvmf_qpair *qpair,
|
||||
struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/*
|
||||
* Get the listener transport ID that accepted this qpair originally.
|
||||
*/
|
||||
int (*qpair_get_listen_trid)(struct spdk_nvmf_qpair *qpair,
|
||||
struct spdk_nvme_transport_id *trid);
|
||||
|
||||
/*
|
||||
* set the submission queue size of the queue pair
|
||||
*/
|
||||
int (*qpair_set_sqsize)(struct spdk_nvmf_qpair *qpair);
|
||||
|
||||
/*
|
||||
* Get transport poll group statistics
|
||||
*/
|
||||
int (*poll_group_get_stat)(struct spdk_nvmf_tgt *tgt,
|
||||
struct spdk_nvmf_transport_poll_group_stat **stat);
|
||||
|
||||
/*
|
||||
* Free transport poll group statistics previously allocated with poll_group_get_stat()
|
||||
*/
|
||||
void (*poll_group_free_stat)(struct spdk_nvmf_transport_poll_group_stat *stat);
|
||||
};
|
||||
|
||||
int spdk_nvmf_transport_stop_listen(struct spdk_nvmf_transport *transport,
|
||||
const struct spdk_nvme_transport_id *trid);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user