nvme_rdma: Continue even if we receive a normal WC when qpair is disconnected
We recently improved qpair disconnect process and added assert if we get a completion without any error when a qpair is disconnected. However unexpectedly we saw this case very often when we ran the test test/nvmf/host/multipath.sh for the real hardware in the test pool. So we remove the assert and change the ERRLOG to INFOLOG. Fixes one of the issues in #2300 Signed-off-by: Shuhei Matsumoto <shuheimatsumoto@gmail.com> Change-Id: Iedbf7e0afa5025da6a810043ba95348ba5b856b3 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10901 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
b6e01459f3
commit
d091a90554
@ -2193,13 +2193,6 @@ nvme_rdma_log_wc_status(struct nvme_rdma_qpair *rqpair, struct ibv_wc *wc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool
|
|
||||||
nvme_rdma_is_rxe_device(struct ibv_device_attr *dev_attr)
|
|
||||||
{
|
|
||||||
return dev_attr->vendor_id == SPDK_RDMA_RXE_VENDOR_ID_OLD ||
|
|
||||||
dev_attr->vendor_id == SPDK_RDMA_RXE_VENDOR_ID_NEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nvme_rdma_cq_process_completions(struct ibv_cq *cq, uint32_t batch_size,
|
nvme_rdma_cq_process_completions(struct ibv_cq *cq, uint32_t batch_size,
|
||||||
struct nvme_rdma_poll_group *group,
|
struct nvme_rdma_poll_group *group,
|
||||||
@ -2290,15 +2283,11 @@ nvme_rdma_cq_process_completions(struct ibv_cq *cq, uint32_t batch_size,
|
|||||||
struct ibv_device_attr dev_attr;
|
struct ibv_device_attr dev_attr;
|
||||||
int query_status;
|
int query_status;
|
||||||
|
|
||||||
/* Bug in Soft Roce - we may receive a completion without error status when qpair is disconnected/destroyed.
|
/* We may receive a completion without error status when qpair is disconnected/destroyed. */
|
||||||
* As sanity check - log an error if we use a real HW (it should never happen) */
|
|
||||||
query_status = ibv_query_device(cq->context, &dev_attr);
|
query_status = ibv_query_device(cq->context, &dev_attr);
|
||||||
if (query_status == 0) {
|
if (query_status == 0) {
|
||||||
if (!nvme_rdma_is_rxe_device(&dev_attr)) {
|
SPDK_INFOLOG(nvme, "Received malformed completion: request 0x%"PRIx64" type %d\n",
|
||||||
SPDK_ERRLOG("Received malformed completion: request 0x%"PRIx64" type %d\n", wc->wr_id,
|
wc->wr_id, rdma_wr->type);
|
||||||
rdma_wr->type);
|
|
||||||
assert(0);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
SPDK_ERRLOG("Failed to query ib device\n");
|
SPDK_ERRLOG("Failed to query ib device\n");
|
||||||
assert(0);
|
assert(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user