diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index 90a629f18..5b2c6f103 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -658,6 +658,8 @@ nvme_qpair_resubmit_requests(struct spdk_nvme_qpair *qpair, uint32_t num_request int resubmit_rc; struct nvme_request *req; + assert(num_requests > 0); + for (i = 0; i < num_requests; i++) { if (qpair->ctrlr->is_resetting) { break; @@ -733,7 +735,9 @@ spdk_nvme_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_ * At this point, ret must represent the number of completions we reaped. * submit as many queued requests as we completed. */ - nvme_qpair_resubmit_requests(qpair, ret); + if (ret > 0) { + nvme_qpair_resubmit_requests(qpair, ret); + } return ret; } diff --git a/lib/nvme/nvme_rdma.c b/lib/nvme/nvme_rdma.c index fe2a8d004..9d38e9869 100644 --- a/lib/nvme/nvme_rdma.c +++ b/lib/nvme/nvme_rdma.c @@ -2579,7 +2579,9 @@ nvme_rdma_poll_group_process_completions(struct spdk_nvme_transport_poll_group * nvme_rdma_qpair_submit_sends(rqpair); nvme_rdma_qpair_submit_recvs(rqpair); - nvme_qpair_resubmit_requests(&rqpair->qpair, rqpair->num_completions); + if (rqpair->num_completions > 0) { + nvme_qpair_resubmit_requests(&rqpair->qpair, rqpair->num_completions); + } } /*