Commit f6149e6f authored by Michael Haeuptle's avatar Michael Haeuptle Committed by Jim Harris
Browse files

nvmf/rdma: Ensure cpl.cid is valid when aborting cmds



When we're aborting a command that is in a state before the "execute" state,
then the response cpl.cid is still 0 instead of the cmd.cid.
This is due to the fact that the response cid is set in _nvmf_request_complete
which is only called once we've submitted an IO.

This fix now sets the cid for all supported abort states.

Change-Id: Ic4d8d86bf5f4c16106953d12cddd27a3000e11ee
Signed-off-by: default avatarMichael Haeuptle <michael.haeuptle@hpe.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25883


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
parent ede26311
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -5033,6 +5033,10 @@ nvmf_rdma_request_set_abort_status(struct spdk_nvmf_request *req,
{
	rdma_req_to_abort->req.rsp->nvme_cpl.status.sct = SPDK_NVME_SCT_GENERIC;
	rdma_req_to_abort->req.rsp->nvme_cpl.status.sc = SPDK_NVME_SC_ABORTED_BY_REQUEST;
	/* Ensure cid is correct in case abort was requested before IO is being executed */
	rdma_req_to_abort->req.rsp->nvme_cpl.sqid = 0;
	rdma_req_to_abort->req.rsp->nvme_cpl.status.p = 0;
	rdma_req_to_abort->req.rsp->nvme_cpl.cid = rdma_req_to_abort->req.cmd->nvme_cmd.cid;

	STAILQ_INSERT_TAIL(&rqpair->pending_rdma_send_queue, rdma_req_to_abort, state_link);
	rdma_req_to_abort->state = RDMA_REQUEST_STATE_READY_TO_COMPLETE_PENDING;