nvmf/rdma: Improve behavior when unable to send response capsule
Previously there was only an assert if it failed to send a response capsule. Now, release the resources associated with the request (and leave the assert in). This is a slight improvement. A full fix will likely involve forcibly terminating the connection. Change-Id: I62377078d0cb310042966a0eaca4c80c5f91f9f7 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/425633 Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@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
efe4c272f9
commit
e7988759d0
@ -1548,10 +1548,14 @@ spdk_nvmf_rdma_request_process(struct spdk_nvmf_rdma_transport *rtransport,
|
||||
(uintptr_t)rdma_req, (uintptr_t)rqpair->cm_id);
|
||||
rc = request_transfer_out(&rdma_req->req, &data_posted);
|
||||
assert(rc == 0); /* No good way to handle this currently */
|
||||
spdk_nvmf_rdma_request_set_state(rdma_req,
|
||||
data_posted ?
|
||||
RDMA_REQUEST_STATE_TRANSFERRING_CONTROLLER_TO_HOST :
|
||||
RDMA_REQUEST_STATE_COMPLETING);
|
||||
if (rc) {
|
||||
spdk_nvmf_rdma_request_set_state(rdma_req, RDMA_REQUEST_STATE_COMPLETED);
|
||||
} else {
|
||||
spdk_nvmf_rdma_request_set_state(rdma_req,
|
||||
data_posted ?
|
||||
RDMA_REQUEST_STATE_TRANSFERRING_CONTROLLER_TO_HOST :
|
||||
RDMA_REQUEST_STATE_COMPLETING);
|
||||
}
|
||||
break;
|
||||
case RDMA_REQUEST_STATE_TRANSFERRING_CONTROLLER_TO_HOST:
|
||||
spdk_trace_record(TRACE_RDMA_REQUEST_STATE_TRANSFERRING_CONTROLLER_TO_HOST, 0, 0,
|
||||
|
Loading…
Reference in New Issue
Block a user