nvmf: revert 'commit ae207216fb
("nvmf: remove request exec backdoor")'
spdk_nvmf_request_exec_fabrics() is still required because for coming vfio-user transport, Fabric commands are executed synchronously, and at that monment, the ADMIN queue was not in active state. Change-Id: I6c53950680d0ad0ab199f66e88ab34a0af46dc14 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4234 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
7f6afb7bc0
commit
2600cd92f5
@ -429,6 +429,7 @@ int spdk_nvmf_request_get_buffers_multi(struct spdk_nvmf_request *req,
|
||||
bool spdk_nvmf_request_get_dif_ctx(struct spdk_nvmf_request *req, struct spdk_dif_ctx *dif_ctx);
|
||||
|
||||
void spdk_nvmf_request_exec(struct spdk_nvmf_request *req);
|
||||
void spdk_nvmf_request_exec_fabrics(struct spdk_nvmf_request *req);
|
||||
int spdk_nvmf_request_free(struct spdk_nvmf_request *req);
|
||||
int spdk_nvmf_request_complete(struct spdk_nvmf_request *req);
|
||||
|
||||
|
@ -3497,6 +3497,33 @@ spdk_nvmf_request_complete(struct spdk_nvmf_request *req)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
spdk_nvmf_request_exec_fabrics(struct spdk_nvmf_request *req)
|
||||
{
|
||||
struct spdk_nvmf_qpair *qpair = req->qpair;
|
||||
struct spdk_nvmf_subsystem_poll_group *sgroup = NULL;
|
||||
enum spdk_nvmf_request_exec_status status;
|
||||
|
||||
if (qpair->ctrlr) {
|
||||
sgroup = &qpair->group->sgroups[qpair->ctrlr->subsys->id];
|
||||
} else if (spdk_unlikely(nvmf_request_is_fabric_connect(req))) {
|
||||
sgroup = nvmf_subsystem_pg_from_connect_cmd(req);
|
||||
}
|
||||
|
||||
assert(sgroup != NULL);
|
||||
sgroup->io_outstanding++;
|
||||
|
||||
/* Place the request on the outstanding list so we can keep track of it */
|
||||
TAILQ_INSERT_TAIL(&qpair->outstanding, req, link);
|
||||
|
||||
assert(req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC);
|
||||
status = nvmf_ctrlr_process_fabrics_cmd(req);
|
||||
|
||||
if (status == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE) {
|
||||
_nvmf_request_complete(req);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
spdk_nvmf_request_exec(struct spdk_nvmf_request *req)
|
||||
{
|
||||
|
@ -109,6 +109,7 @@
|
||||
spdk_nvmf_request_get_buffers;
|
||||
spdk_nvmf_request_get_buffers_multi;
|
||||
spdk_nvmf_request_get_dif_ctx;
|
||||
spdk_nvmf_request_exec_fabrics;
|
||||
spdk_nvmf_request_exec;
|
||||
spdk_nvmf_request_free;
|
||||
spdk_nvmf_request_complete;
|
||||
|
Loading…
Reference in New Issue
Block a user