rdma: decrement descriptor before checking SEND_WITH_INVAL
We were incrementing over the end of the descriptor list and assigning undefined values to the rsp opcode in SEND_WITH_INVAL case. We were only hitting this error when mixing sgl and inline requests in the same workload. We were just by chance hitting a four bit value that was set to all 1s from the in capsule data from the last request. Change-Id: Ied06356f3d22fa34a2cd869dfad6bdca8720791d Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450873 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
3f2553a3f7
commit
7d7b44f2a6
@ -1629,6 +1629,8 @@ nvmf_rdma_request_fill_iovs_multi_sgl(struct spdk_nvmf_rdma_transport *rtranspor
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SPDK_CONFIG_RDMA_SEND_WITH_INVAL
|
#ifdef SPDK_CONFIG_RDMA_SEND_WITH_INVAL
|
||||||
|
/* Go back to the last descriptor in the list. */
|
||||||
|
desc--;
|
||||||
if ((device->attr.device_cap_flags & IBV_DEVICE_MEM_MGT_EXTENSIONS) != 0) {
|
if ((device->attr.device_cap_flags & IBV_DEVICE_MEM_MGT_EXTENSIONS) != 0) {
|
||||||
if (desc->keyed.subtype == SPDK_NVME_SGL_SUBTYPE_INVALIDATE_KEY) {
|
if (desc->keyed.subtype == SPDK_NVME_SGL_SUBTYPE_INVALIDATE_KEY) {
|
||||||
rdma_req->rsp.wr.opcode = IBV_WR_SEND_WITH_INV;
|
rdma_req->rsp.wr.opcode = IBV_WR_SEND_WITH_INV;
|
||||||
|
Loading…
Reference in New Issue
Block a user