From fa757dc96d5265823093c4cc2f604be81796de41 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Fri, 21 Dec 2018 10:56:34 -0700 Subject: [PATCH] rdma: dump outstanding requests from rqpairs If this happens, we have something going seriously wrong and we need as much debug information as we can get. Change-Id: I305512790461443316b9f231fa2afeb69593af1b Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/c/438097 Chandler-Test-Pool: SPDK Automated Test System Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Tested-by: SPDK CI Jenkins --- lib/nvmf/rdma.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 4dacd87df..de706856e 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -583,6 +583,28 @@ spdk_nvmf_rdma_cur_queue_depth(struct spdk_nvmf_rdma_qpair *rqpair) rqpair->state_cntr[RDMA_REQUEST_STATE_FREE]; } +static void +nvmf_rdma_dump_request(struct spdk_nvmf_rdma_request *req) +{ + SPDK_ERRLOG("\t\tRequest Data From Pool: %d\n", req->data_from_pool); + SPDK_ERRLOG("\t\tRequest opcode: %d\n", req->req.cmd->nvmf_cmd.opcode); + SPDK_ERRLOG("\t\tRequest recv wr_id%lu\n", req->recv->wr.wr_id); +} + +static void +nvmf_rdma_dump_qpair_contents(struct spdk_nvmf_rdma_qpair *rqpair) +{ + int i; + struct spdk_nvmf_rdma_request *req; + SPDK_ERRLOG("Dumping contents of queue pair (QID %d)\n", rqpair->qpair.qid); + for (i = 1; i < RDMA_REQUEST_NUM_STATES; i++) { + SPDK_ERRLOG("\tdumping requests in state %d\n", i); + TAILQ_FOREACH(req, &rqpair->state_queue[i], state_link) { + nvmf_rdma_dump_request(req); + } + } +} + static void spdk_nvmf_rdma_qpair_destroy(struct spdk_nvmf_rdma_qpair *rqpair) { @@ -596,6 +618,7 @@ spdk_nvmf_rdma_qpair_destroy(struct spdk_nvmf_rdma_qpair *rqpair) qd = spdk_nvmf_rdma_cur_queue_depth(rqpair); if (qd != 0) { + nvmf_rdma_dump_qpair_contents(rqpair); SPDK_WARNLOG("Destroying qpair when queue depth is %d\n", qd); }