nvmf: fix status override in case parse_sgl fails
It is valuable to have more detail status instead SPDK_NVME_SC_INTERNAL_DEVICE_ERROR. Signed-off-by: Jacek Kalwas <jacek.kalwas@intel.com> Change-Id: Ifd003b490a7ae9af017645c97636ceaf2f93d4b0 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/476634 Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com> 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
b8d0691ff3
commit
f206551388
@ -1870,6 +1870,7 @@ spdk_nvmf_rdma_request_parse_sgl(struct spdk_nvmf_rdma_transport *rtransport,
|
||||
if (spdk_unlikely(rc < 0)) {
|
||||
if (rc == -EINVAL) {
|
||||
SPDK_ERRLOG("SGL length exceeds the max I/O size\n");
|
||||
rsp->status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID;
|
||||
return -1;
|
||||
}
|
||||
/* No available buffers. Queue this request up. */
|
||||
@ -1926,6 +1927,7 @@ spdk_nvmf_rdma_request_parse_sgl(struct spdk_nvmf_rdma_transport *rtransport,
|
||||
return 0;
|
||||
} else if (rc == -EINVAL) {
|
||||
SPDK_ERRLOG("Multi SGL element request length exceeds the max I/O size\n");
|
||||
rsp->status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -2065,7 +2067,6 @@ spdk_nvmf_rdma_request_process(struct spdk_nvmf_rdma_transport *rtransport,
|
||||
rc = spdk_nvmf_rdma_request_parse_sgl(rtransport, device, rdma_req);
|
||||
if (rc < 0) {
|
||||
STAILQ_REMOVE_HEAD(&rgroup->group.pending_buf_queue, buf_link);
|
||||
rsp->status.sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
||||
rdma_req->state = RDMA_REQUEST_STATE_READY_TO_COMPLETE;
|
||||
break;
|
||||
}
|
||||
|
@ -2446,7 +2446,6 @@ spdk_nvmf_tcp_req_process(struct spdk_nvmf_tcp_transport *ttransport,
|
||||
struct spdk_nvmf_tcp_req *tcp_req)
|
||||
{
|
||||
struct spdk_nvmf_tcp_qpair *tqpair;
|
||||
struct spdk_nvme_cpl *rsp = &tcp_req->req.rsp->nvme_cpl;
|
||||
int rc;
|
||||
enum spdk_nvmf_tcp_req_state prev_state;
|
||||
bool progress = false;
|
||||
@ -2517,7 +2516,6 @@ spdk_nvmf_tcp_req_process(struct spdk_nvmf_tcp_transport *ttransport,
|
||||
rc = spdk_nvmf_tcp_req_parse_sgl(tcp_req, transport, group);
|
||||
if (rc < 0) {
|
||||
STAILQ_REMOVE_HEAD(&group->pending_buf_queue, buf_link);
|
||||
rsp->status.sc = SPDK_NVME_SC_INTERNAL_DEVICE_ERROR;
|
||||
/* Reset the tqpair receving pdu state */
|
||||
spdk_nvmf_tcp_qpair_set_recv_state(tqpair, NVME_TCP_PDU_RECV_STATE_ERROR);
|
||||
spdk_nvmf_tcp_req_set_state(tcp_req, TCP_REQUEST_STATE_READY_TO_COMPLETE);
|
||||
|
Loading…
x
Reference in New Issue
Block a user