nvmf: Poll groups can now span transports
We are still creating one poll group per controller, so this isn't particularly useful just yet. Change-Id: I65c54385bdba587d4b1098629727877970d39277 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/376241 Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
e237ce317e
commit
c1535ca0af
@ -75,7 +75,7 @@ spdk_nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ctrlr->group = spdk_nvmf_transport_poll_group_create(admin_qpair->transport);
|
ctrlr->group = spdk_nvmf_poll_group_create(subsystem->tgt);
|
||||||
if (ctrlr->group == NULL) {
|
if (ctrlr->group == NULL) {
|
||||||
SPDK_ERRLOG("spdk_nvmf_transport_poll_group_create() failed\n");
|
SPDK_ERRLOG("spdk_nvmf_transport_poll_group_create() failed\n");
|
||||||
free(ctrlr);
|
free(ctrlr);
|
||||||
@ -86,7 +86,7 @@ spdk_nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
if (ctrlr->cntlid == 0) {
|
if (ctrlr->cntlid == 0) {
|
||||||
/* Unable to get a cntlid */
|
/* Unable to get a cntlid */
|
||||||
SPDK_ERRLOG("Reached max simultaneous ctrlrs\n");
|
SPDK_ERRLOG("Reached max simultaneous ctrlrs\n");
|
||||||
spdk_nvmf_transport_poll_group_destroy(ctrlr->group);
|
spdk_nvmf_poll_group_destroy(ctrlr->group);
|
||||||
free(ctrlr);
|
free(ctrlr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -100,8 +100,8 @@ spdk_nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
|
|
||||||
memcpy(ctrlr->hostid, connect_data->hostid, sizeof(ctrlr->hostid));
|
memcpy(ctrlr->hostid, connect_data->hostid, sizeof(ctrlr->hostid));
|
||||||
|
|
||||||
if (spdk_nvmf_transport_poll_group_add(ctrlr->group, admin_qpair)) {
|
if (spdk_nvmf_poll_group_add(ctrlr->group, admin_qpair)) {
|
||||||
spdk_nvmf_transport_poll_group_destroy(ctrlr->group);
|
spdk_nvmf_poll_group_destroy(ctrlr->group);
|
||||||
free(ctrlr);
|
free(ctrlr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -139,7 +139,7 @@ spdk_nvmf_ctrlr_create(struct spdk_nvmf_subsystem *subsystem,
|
|||||||
static void ctrlr_destruct(struct spdk_nvmf_ctrlr *ctrlr)
|
static void ctrlr_destruct(struct spdk_nvmf_ctrlr *ctrlr)
|
||||||
{
|
{
|
||||||
TAILQ_REMOVE(&ctrlr->subsys->ctrlrs, ctrlr, link);
|
TAILQ_REMOVE(&ctrlr->subsys->ctrlrs, ctrlr, link);
|
||||||
spdk_nvmf_transport_poll_group_destroy(ctrlr->group);
|
spdk_nvmf_poll_group_destroy(ctrlr->group);
|
||||||
free(ctrlr);
|
free(ctrlr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,7 +292,7 @@ spdk_nvmf_ctrlr_connect(struct spdk_nvmf_qpair *qpair,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spdk_nvmf_transport_poll_group_add(ctrlr->group, qpair)) {
|
if (spdk_nvmf_poll_group_add(ctrlr->group, qpair)) {
|
||||||
INVALID_CONNECT_CMD(qid);
|
INVALID_CONNECT_CMD(qid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -317,7 +317,7 @@ spdk_nvmf_ctrlr_disconnect(struct spdk_nvmf_qpair *qpair)
|
|||||||
ctrlr->num_qpairs--;
|
ctrlr->num_qpairs--;
|
||||||
TAILQ_REMOVE(&ctrlr->qpairs, qpair, link);
|
TAILQ_REMOVE(&ctrlr->qpairs, qpair, link);
|
||||||
|
|
||||||
spdk_nvmf_transport_poll_group_remove(ctrlr->group, qpair);
|
spdk_nvmf_poll_group_remove(ctrlr->group, qpair);
|
||||||
spdk_nvmf_transport_qpair_fini(qpair);
|
spdk_nvmf_transport_qpair_fini(qpair);
|
||||||
|
|
||||||
if (ctrlr->num_qpairs == 0) {
|
if (ctrlr->num_qpairs == 0) {
|
||||||
@ -570,7 +570,7 @@ spdk_nvmf_ctrlr_poll(struct spdk_nvmf_ctrlr *ctrlr)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return spdk_nvmf_transport_poll_group_poll(ctrlr->group);
|
return spdk_nvmf_poll_group_poll(ctrlr->group);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -233,6 +233,99 @@ spdk_nvmf_tgt_accept(struct spdk_nvmf_tgt *tgt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct spdk_nvmf_poll_group *
|
||||||
|
spdk_nvmf_poll_group_create(struct spdk_nvmf_tgt *tgt)
|
||||||
|
{
|
||||||
|
struct spdk_nvmf_poll_group *group;
|
||||||
|
struct spdk_nvmf_transport *transport;
|
||||||
|
struct spdk_nvmf_transport_poll_group *tgroup;
|
||||||
|
|
||||||
|
group = calloc(1, sizeof(*group));
|
||||||
|
if (!group) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
TAILQ_INIT(&group->tgroups);
|
||||||
|
|
||||||
|
TAILQ_FOREACH(transport, &tgt->transports, link) {
|
||||||
|
tgroup = spdk_nvmf_transport_poll_group_create(transport);
|
||||||
|
if (!tgroup) {
|
||||||
|
SPDK_ERRLOG("Unable to create poll group for transport\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
TAILQ_INSERT_TAIL(&group->tgroups, tgroup, link);
|
||||||
|
}
|
||||||
|
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
spdk_nvmf_poll_group_destroy(struct spdk_nvmf_poll_group *group)
|
||||||
|
{
|
||||||
|
struct spdk_nvmf_transport_poll_group *tgroup, *tmp;
|
||||||
|
|
||||||
|
TAILQ_FOREACH_SAFE(tgroup, &group->tgroups, link, tmp) {
|
||||||
|
TAILQ_REMOVE(&group->tgroups, tgroup, link);
|
||||||
|
spdk_nvmf_transport_poll_group_destroy(tgroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,
|
||||||
|
struct spdk_nvmf_qpair *qpair)
|
||||||
|
{
|
||||||
|
int rc = -1;
|
||||||
|
struct spdk_nvmf_transport_poll_group *tgroup;
|
||||||
|
|
||||||
|
TAILQ_FOREACH(tgroup, &group->tgroups, link) {
|
||||||
|
if (tgroup->transport == qpair->transport) {
|
||||||
|
rc = spdk_nvmf_transport_poll_group_add(tgroup, qpair);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
spdk_nvmf_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
||||||
|
struct spdk_nvmf_qpair *qpair)
|
||||||
|
{
|
||||||
|
int rc = -1;
|
||||||
|
struct spdk_nvmf_transport_poll_group *tgroup;
|
||||||
|
|
||||||
|
TAILQ_FOREACH(tgroup, &group->tgroups, link) {
|
||||||
|
if (tgroup->transport == qpair->transport) {
|
||||||
|
rc = spdk_nvmf_transport_poll_group_remove(tgroup, qpair);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
spdk_nvmf_poll_group_poll(struct spdk_nvmf_poll_group *group)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
int count = 0;
|
||||||
|
struct spdk_nvmf_transport_poll_group *tgroup;
|
||||||
|
|
||||||
|
TAILQ_FOREACH(tgroup, &group->tgroups, link) {
|
||||||
|
rc = spdk_nvmf_transport_poll_group_poll(tgroup);
|
||||||
|
if (rc < 0) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
count += rc;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
SPDK_TRACE_REGISTER_FN(nvmf_trace)
|
SPDK_TRACE_REGISTER_FN(nvmf_trace)
|
||||||
{
|
{
|
||||||
spdk_trace_register_object(OBJECT_NVMF_IO, 'r');
|
spdk_trace_register_object(OBJECT_NVMF_IO, 'r');
|
||||||
|
@ -69,8 +69,14 @@ struct spdk_nvmf_listener {
|
|||||||
TAILQ_ENTRY(spdk_nvmf_listener) link;
|
TAILQ_ENTRY(spdk_nvmf_listener) link;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct spdk_nvmf_transport_poll_group {
|
||||||
|
struct spdk_nvmf_transport *transport;
|
||||||
|
TAILQ_ENTRY(spdk_nvmf_transport_poll_group) link;
|
||||||
|
};
|
||||||
|
|
||||||
struct spdk_nvmf_poll_group {
|
struct spdk_nvmf_poll_group {
|
||||||
struct spdk_nvmf_transport *transport;
|
TAILQ_HEAD(, spdk_nvmf_transport_poll_group) tgroups;
|
||||||
|
|
||||||
TAILQ_ENTRY(spdk_nvmf_poll_group) link;
|
TAILQ_ENTRY(spdk_nvmf_poll_group) link;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -111,6 +117,19 @@ uint16_t spdk_nvmf_tgt_gen_cntlid(struct spdk_nvmf_tgt *tgt);
|
|||||||
struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt,
|
struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt,
|
||||||
enum spdk_nvme_transport_type);
|
enum spdk_nvme_transport_type);
|
||||||
|
|
||||||
|
struct spdk_nvmf_poll_group *spdk_nvmf_poll_group_create(
|
||||||
|
struct spdk_nvmf_tgt *tgt);
|
||||||
|
|
||||||
|
void spdk_nvmf_poll_group_destroy(struct spdk_nvmf_poll_group *group);
|
||||||
|
|
||||||
|
int spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,
|
||||||
|
struct spdk_nvmf_qpair *qpair);
|
||||||
|
|
||||||
|
int spdk_nvmf_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
||||||
|
struct spdk_nvmf_qpair *qpair);
|
||||||
|
|
||||||
|
int spdk_nvmf_poll_group_poll(struct spdk_nvmf_poll_group *group);
|
||||||
|
|
||||||
static inline struct spdk_nvmf_ns *
|
static inline struct spdk_nvmf_ns *
|
||||||
_spdk_nvmf_subsystem_get_ns(struct spdk_nvmf_subsystem *subsystem, uint32_t nsid)
|
_spdk_nvmf_subsystem_get_ns(struct spdk_nvmf_subsystem *subsystem, uint32_t nsid)
|
||||||
{
|
{
|
||||||
|
@ -216,7 +216,7 @@ struct spdk_nvmf_rdma_poller {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct spdk_nvmf_rdma_poll_group {
|
struct spdk_nvmf_rdma_poll_group {
|
||||||
struct spdk_nvmf_poll_group group;
|
struct spdk_nvmf_transport_poll_group group;
|
||||||
|
|
||||||
TAILQ_HEAD(, spdk_nvmf_rdma_poller) pollers;
|
TAILQ_HEAD(, spdk_nvmf_rdma_poller) pollers;
|
||||||
};
|
};
|
||||||
@ -1452,7 +1452,7 @@ spdk_nvmf_rdma_discover(struct spdk_nvmf_transport *transport,
|
|||||||
entry->tsas.rdma.rdma_cms = SPDK_NVMF_RDMA_CMS_RDMA_CM;
|
entry->tsas.rdma.rdma_cms = SPDK_NVMF_RDMA_CMS_RDMA_CM;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct spdk_nvmf_poll_group *
|
static struct spdk_nvmf_transport_poll_group *
|
||||||
spdk_nvmf_rdma_poll_group_create(struct spdk_nvmf_transport *transport)
|
spdk_nvmf_rdma_poll_group_create(struct spdk_nvmf_transport *transport)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_rdma_transport *rtransport;
|
struct spdk_nvmf_rdma_transport *rtransport;
|
||||||
@ -1502,7 +1502,7 @@ spdk_nvmf_rdma_poll_group_create(struct spdk_nvmf_transport *transport)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
spdk_nvmf_rdma_poll_group_destroy(struct spdk_nvmf_poll_group *group)
|
spdk_nvmf_rdma_poll_group_destroy(struct spdk_nvmf_transport_poll_group *group)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_rdma_poll_group *rgroup;
|
struct spdk_nvmf_rdma_poll_group *rgroup;
|
||||||
struct spdk_nvmf_rdma_poller *poller, *tmp;
|
struct spdk_nvmf_rdma_poller *poller, *tmp;
|
||||||
@ -1522,7 +1522,7 @@ spdk_nvmf_rdma_poll_group_destroy(struct spdk_nvmf_poll_group *group)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_nvmf_rdma_poll_group_add(struct spdk_nvmf_poll_group *group,
|
spdk_nvmf_rdma_poll_group_add(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair)
|
struct spdk_nvmf_qpair *qpair)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_rdma_poll_group *rgroup;
|
struct spdk_nvmf_rdma_poll_group *rgroup;
|
||||||
@ -1557,7 +1557,7 @@ spdk_nvmf_rdma_poll_group_add(struct spdk_nvmf_poll_group *group,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_nvmf_rdma_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
spdk_nvmf_rdma_poll_group_remove(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair)
|
struct spdk_nvmf_qpair *qpair)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_rdma_poll_group *rgroup;
|
struct spdk_nvmf_rdma_poll_group *rgroup;
|
||||||
@ -1770,7 +1770,7 @@ spdk_nvmf_rdma_qpair_poll(struct spdk_nvmf_rdma_transport *rtransport,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
spdk_nvmf_rdma_poll_group_poll(struct spdk_nvmf_poll_group *group)
|
spdk_nvmf_rdma_poll_group_poll(struct spdk_nvmf_transport_poll_group *group)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_rdma_transport *rtransport;
|
struct spdk_nvmf_rdma_transport *rtransport;
|
||||||
struct spdk_nvmf_rdma_poll_group *rgroup;
|
struct spdk_nvmf_rdma_poll_group *rgroup;
|
||||||
|
@ -120,10 +120,10 @@ spdk_nvmf_transport_listener_discover(struct spdk_nvmf_transport *transport,
|
|||||||
transport->ops->listener_discover(transport, trid, entry);
|
transport->ops->listener_discover(transport, trid, entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct spdk_nvmf_poll_group *
|
struct spdk_nvmf_transport_poll_group *
|
||||||
spdk_nvmf_transport_poll_group_create(struct spdk_nvmf_transport *transport)
|
spdk_nvmf_transport_poll_group_create(struct spdk_nvmf_transport *transport)
|
||||||
{
|
{
|
||||||
struct spdk_nvmf_poll_group *group;
|
struct spdk_nvmf_transport_poll_group *group;
|
||||||
|
|
||||||
group = transport->ops->poll_group_create(transport);
|
group = transport->ops->poll_group_create(transport);
|
||||||
group->transport = transport;
|
group->transport = transport;
|
||||||
@ -132,13 +132,13 @@ spdk_nvmf_transport_poll_group_create(struct spdk_nvmf_transport *transport)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
spdk_nvmf_transport_poll_group_destroy(struct spdk_nvmf_poll_group *group)
|
spdk_nvmf_transport_poll_group_destroy(struct spdk_nvmf_transport_poll_group *group)
|
||||||
{
|
{
|
||||||
group->transport->ops->poll_group_destroy(group);
|
group->transport->ops->poll_group_destroy(group);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_poll_group *group,
|
spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair)
|
struct spdk_nvmf_qpair *qpair)
|
||||||
{
|
{
|
||||||
if (qpair->transport) {
|
if (qpair->transport) {
|
||||||
@ -154,14 +154,14 @@ spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_poll_group *group,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_nvmf_transport_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
spdk_nvmf_transport_poll_group_remove(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair)
|
struct spdk_nvmf_qpair *qpair)
|
||||||
{
|
{
|
||||||
return group->transport->ops->poll_group_remove(group, qpair);
|
return group->transport->ops->poll_group_remove(group, qpair);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_nvmf_transport_poll_group_poll(struct spdk_nvmf_poll_group *group)
|
spdk_nvmf_transport_poll_group_poll(struct spdk_nvmf_transport_poll_group *group)
|
||||||
{
|
{
|
||||||
return group->transport->ops->poll_group_poll(group);
|
return group->transport->ops->poll_group_poll(group);
|
||||||
}
|
}
|
||||||
|
@ -90,29 +90,29 @@ struct spdk_nvmf_transport_ops {
|
|||||||
/**
|
/**
|
||||||
* Create a new poll group
|
* Create a new poll group
|
||||||
*/
|
*/
|
||||||
struct spdk_nvmf_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport);
|
struct spdk_nvmf_transport_poll_group *(*poll_group_create)(struct spdk_nvmf_transport *transport);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy a poll group
|
* Destroy a poll group
|
||||||
*/
|
*/
|
||||||
void (*poll_group_destroy)(struct spdk_nvmf_poll_group *group);
|
void (*poll_group_destroy)(struct spdk_nvmf_transport_poll_group *group);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a qpair to a poll group
|
* Add a qpair to a poll group
|
||||||
*/
|
*/
|
||||||
int (*poll_group_add)(struct spdk_nvmf_poll_group *group,
|
int (*poll_group_add)(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair);
|
struct spdk_nvmf_qpair *qpair);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a qpair from a poll group
|
* Remove a qpair from a poll group
|
||||||
*/
|
*/
|
||||||
int (*poll_group_remove)(struct spdk_nvmf_poll_group *group,
|
int (*poll_group_remove)(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair);
|
struct spdk_nvmf_qpair *qpair);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Poll the group to process I/O
|
* Poll the group to process I/O
|
||||||
*/
|
*/
|
||||||
int (*poll_group_poll)(struct spdk_nvmf_poll_group *group);
|
int (*poll_group_poll)(struct spdk_nvmf_transport_poll_group *group);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Signal request completion, which sends a response
|
* Signal request completion, which sends a response
|
||||||
@ -147,18 +147,18 @@ void spdk_nvmf_transport_listener_discover(struct spdk_nvmf_transport *transport
|
|||||||
struct spdk_nvme_transport_id *trid,
|
struct spdk_nvme_transport_id *trid,
|
||||||
struct spdk_nvmf_discovery_log_page_entry *entry);
|
struct spdk_nvmf_discovery_log_page_entry *entry);
|
||||||
|
|
||||||
struct spdk_nvmf_poll_group *spdk_nvmf_transport_poll_group_create(struct spdk_nvmf_transport
|
struct spdk_nvmf_transport_poll_group *spdk_nvmf_transport_poll_group_create(
|
||||||
*transport);
|
struct spdk_nvmf_transport *transport);
|
||||||
|
|
||||||
void spdk_nvmf_transport_poll_group_destroy(struct spdk_nvmf_poll_group *group);
|
void spdk_nvmf_transport_poll_group_destroy(struct spdk_nvmf_transport_poll_group *group);
|
||||||
|
|
||||||
int spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_poll_group *group,
|
int spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair);
|
struct spdk_nvmf_qpair *qpair);
|
||||||
|
|
||||||
int spdk_nvmf_transport_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
int spdk_nvmf_transport_poll_group_remove(struct spdk_nvmf_transport_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair);
|
struct spdk_nvmf_qpair *qpair);
|
||||||
|
|
||||||
int spdk_nvmf_transport_poll_group_poll(struct spdk_nvmf_poll_group *group);
|
int spdk_nvmf_transport_poll_group_poll(struct spdk_nvmf_transport_poll_group *group);
|
||||||
|
|
||||||
int spdk_nvmf_transport_req_complete(struct spdk_nvmf_request *req);
|
int spdk_nvmf_transport_req_complete(struct spdk_nvmf_request *req);
|
||||||
|
|
||||||
|
@ -58,13 +58,13 @@ spdk_nvme_ctrlr_get_data(struct spdk_nvme_ctrlr *ctrlr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct spdk_nvmf_poll_group *
|
struct spdk_nvmf_poll_group *
|
||||||
spdk_nvmf_transport_poll_group_create(struct spdk_nvmf_transport *transport)
|
spdk_nvmf_poll_group_create(struct spdk_nvmf_tgt *tgt)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
spdk_nvmf_transport_poll_group_destroy(struct spdk_nvmf_poll_group *group)
|
spdk_nvmf_poll_group_destroy(struct spdk_nvmf_poll_group *group)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,21 +74,21 @@ spdk_nvmf_transport_qpair_fini(struct spdk_nvmf_qpair *qpair)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_nvmf_transport_poll_group_add(struct spdk_nvmf_poll_group *group,
|
spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair)
|
struct spdk_nvmf_qpair *qpair)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_nvmf_transport_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
spdk_nvmf_poll_group_remove(struct spdk_nvmf_poll_group *group,
|
||||||
struct spdk_nvmf_qpair *qpair)
|
struct spdk_nvmf_qpair *qpair)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
spdk_nvmf_transport_poll_group_poll(struct spdk_nvmf_poll_group *group)
|
spdk_nvmf_poll_group_poll(struct spdk_nvmf_poll_group *group)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user