From 0bd08c4536ede3201f87d40520813ead3e0b031c Mon Sep 17 00:00:00 2001 From: Pawel Wodkowski Date: Fri, 14 Oct 2016 18:18:34 +0200 Subject: [PATCH] nvme: don't call request callback if it is inactive Change-Id: I150ed2dc7cea91f262ee0773c892069a56b68902 Signed-off-by: Pawel Wodkowski --- lib/nvme/nvme_qpair.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/nvme/nvme_qpair.c b/lib/nvme/nvme_qpair.c index 0c54f2920..43fb3a06a 100644 --- a/lib/nvme/nvme_qpair.c +++ b/lib/nvme/nvme_qpair.c @@ -365,7 +365,7 @@ nvme_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_tracker * struct spdk_nvme_cpl *cpl, bool print_on_error) { struct nvme_request *req; - bool retry, error; + bool retry, error, was_active; req = tr->req; @@ -380,6 +380,7 @@ nvme_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_tracker * nvme_qpair_print_completion(qpair, cpl); } + was_active = qpair->tr[cpl->cid].active; qpair->tr[cpl->cid].active = false; assert(cpl->cid == req->cmd.cid); @@ -388,7 +389,7 @@ nvme_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_tracker * req->retries++; nvme_qpair_submit_tracker(qpair, tr); } else { - if (req->cb_fn) { + if (was_active && req->cb_fn) { req->cb_fn(req->cb_arg, cpl); }